<?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>208664</bug_id>
          
          <creation_ts>2020-03-05 13:30:56 -0800</creation_ts>
          <short_desc>Allow deleteById to be cached in the DFG</short_desc>
          <delta_ts>2020-04-14 13:40:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210513</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>justin</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>ticaiolima</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>1626270</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-05 13:30:56 -0800</bug_when>
    <thetext>Allow deleteById to be cached in the DFG</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626276</commentid>
    <comment_count>1</comment_count>
      <attachid>392619</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-05 13:47:53 -0800</bug_when>
    <thetext>Created attachment 392619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626280</commentid>
    <comment_count>2</comment_count>
      <attachid>392621</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-05 14:00:28 -0800</bug_when>
    <thetext>Created attachment 392621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626852</commentid>
    <comment_count>3</comment_count>
      <attachid>392768</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-06 13:47:36 -0800</bug_when>
    <thetext>Created attachment 392768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627808</commentid>
    <comment_count>4</comment_count>
      <attachid>393045</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-09 09:32:53 -0700</bug_when>
    <thetext>Created attachment 393045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627871</commentid>
    <comment_count>5</comment_count>
      <attachid>393045</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-03-09 12:22:39 -0700</bug_when>
    <thetext>Comment on attachment 393045
Patch

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

Informal review. Overall LGTM. I left some comments below.

&gt; Source/JavaScriptCore/bytecode/DeleteByIdVariant.h:45
&gt; +        CacheableIdentifier, bool result,

I think it would be clearer for users of this class to receive `AccessCase::AccessType` instead of `bool result` directly. Then the constructor could properly sent `m_result` from this input. IIUC, it could be `m_result(accessType == AccessCase::Delete || accessType == AccessCase::DeleteMiss)`.

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:123
&gt; +                DeleteByIdVariant variant(access.identifier(), access.type() == AccessCase::DeleteMiss ? true : false, structure, nullptr, invalidOffset);

Here we would only call `DeleteByIdVariant variant(access.identifier(), access.type(), structure, nullptr, invalidOffset);`.

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:135
&gt; +                DeleteByIdVariant variant(access.identifier(), true, structure, newStructure, access.offset());

And here we would have `DeleteByIdVariant variant(access.identifier(), AccessCase::Delete, structure, newStructure, access.offset())`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629421</commentid>
    <comment_count>6</comment_count>
      <attachid>393428</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-12 17:06:47 -0700</bug_when>
    <thetext>Created attachment 393428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629473</commentid>
    <comment_count>7</comment_count>
      <attachid>393428</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-03-12 20:18:53 -0700</bug_when>
    <thetext>Comment on attachment 393428
Patch

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

Mostly LGTM, but I think I found a couple legitimate bugs

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        creating a new node, FilterDeleteByStatus, and then turning these DeleteById nodes into a FilterDeleteByStatus,
&gt; +        CheckStructure, PutByOffset, then PutStructure. The logic for pessimising this optimization is the same as for 

or just CheckStructure in the case of a miss delete, right?

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        This also adds a MultiDeleteByOffset node, for the case when there are multiple structures seen by the delete.

If they&apos;re all misses, do you still just emit a CheckStructure?

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:112
&gt; +            if (access.viaProxy())
&gt; +                return DeleteByStatus(JSC::slowVersion(summary), *stubInfo);

does this work currently in the IC? Like deleting via window proxy?

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:115
&gt; +            if (access.usesPolyProto())
&gt; +                return DeleteByStatus(JSC::slowVersion(summary), *stubInfo);

is this even possible? Delete doesn&apos;t do anything on the prototype chain. Seems like it should be an assert or just drop the line entirely

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:131
&gt; +                ASSERT_UNUSED(offset, offset == access.offset());

how is this correct if we fail to find the transition?

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.h:85
&gt; +    bool finalize(VM&amp;) { return true; }

this looks super wrong :-)

What if your variants structures aren&apos;t marked?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4651
&gt; +        for (const DeleteByIdVariant&amp; variant : deleteByStatus.variants()) {
&gt; +            m_graph.registerStructure(variant.oldStructure());
&gt; +            if (variant.newStructure())
&gt; +                m_graph.registerStructure(variant.newStructure());
&gt; +        }
&gt; +
&gt; +        MultiDeleteByOffsetData* data = m_graph.m_multiDeleteByOffsetData.add();
&gt; +        data-&gt;variants = deleteByStatus.variants();
&gt; +        data-&gt;identifierNumber = identifierNumber;
&gt; +        set(destination,
&gt; +            addToGraph(MultiDeleteByOffset, OpInfo(data), base));

if all of these are delete misses (and all either the non-configurable or the configurable kind), can we just turn this into a CheckStructure followed by &quot;true&quot; or &quot;false&quot; ? Seems like that&apos;s more efficient for other analyses

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6030
&gt; +            handleDeleteById(bytecode.m_dst, base, identifierNumber, deleteByStatus);

what about delete by val when the identifier is monotonic? If you don&apos;t do that in this patch, please file a bug to do it. (You can see what we do for get_by_val)

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1345
&gt; +        addBaseCheck(indexInBlock, node, baseValue, m_graph.registerStructure(variant.oldStructure()));

this seems to indicate we must be exitOK to begin with

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1350
&gt; +            node-&gt;origin.exitOK = false;

nit: we usually write this as:
node-&gt;origin = node-&gt;origin.withInvalidExit()

But, that said, why has our origin changed at all? Seems like we should just maintain if we&apos;re safe or not safe to exit, right?

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1373
&gt; +        m_insertionSet.insertNode(
&gt; +            indexInBlock, SpecNone, PutByOffset, origin.withInvalidExit(), OpInfo(&amp;data), propertyStorage, node-&gt;child1(), Edge(clearValue));

This seems like it should maintain the same origin

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1376
&gt; +        m_insertionSet.insertNode(
&gt; +            indexInBlock, SpecNone, PutStructure, origin.withInvalidExit(), OpInfo(transition),
&gt; +            node-&gt;child1());

and this seems like it should be exit invalid (as you have), since the store above invalidates exit state if we were safe to exit

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1378
&gt; +        node-&gt;origin.exitOK = false;

nit: should be origin = origin.withInvalidExit()

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8132
&gt; +        int missConfigurable = 0;
&gt; +        int missNonconfigurable = 0;

size_t or unsigned

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8134
&gt; +        for (unsigned i = data.variants.size(); i--;) {

size_t or unsigned

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8144
&gt; +        int uniqueCaseCount = data.variants.size();

size_t or unsigned

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8150
&gt; +        int trueBlock = missConfigurable ? uniqueCaseCount - 1 : -1;
&gt; +        int falseBlock = missNonconfigurable ? uniqueCaseCount - 1 - !!missConfigurable : -1;

nit: Optional&lt;size_t&gt; or Optional&lt;unsigned&gt;

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8200
&gt; +            results.append(m_out.anchor(variant.result() ? m_out.intPtrOne : m_out.intPtrZero));

This is wrong for booleans. We expect them to be i32. I wonder why nothing is actually crashing because of this in validation.

Anyways, you want m_out.booleanTrue and m_out.booleanFalse

If you do some math on your boolean result in js, I bet you trigger some validation errors

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8207
&gt; +            results.append(m_out.anchor(m_out.intPtrZero));

ditto

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8213
&gt; +            results.append(m_out.anchor(m_out.intPtrOne));

ditto

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8223
&gt; +        setBoolean(m_out.phi(Int64, results));

and this should be Int32</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629828</commentid>
    <comment_count>8</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-13 14:28:34 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #7)
&gt; Comment on attachment 393428 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393428&amp;action=review
&gt; 
&gt; Mostly LGTM, but I think I found a couple legitimate bugs
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:10
&gt; &gt; +        creating a new node, FilterDeleteByStatus, and then turning these DeleteById nodes into a FilterDeleteByStatus,
&gt; &gt; +        CheckStructure, PutByOffset, then PutStructure. The logic for pessimising this optimization is the same as for 
&gt; 
&gt; or just CheckStructure in the case of a miss delete, right?

Yes, changed.

&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:14
&gt; &gt; +        This also adds a MultiDeleteByOffset node, for the case when there are multiple structures seen by the delete.
&gt; 
&gt; If they&apos;re all misses, do you still just emit a CheckStructure?

Not yet, adding that now.

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:112
&gt; &gt; +            if (access.viaProxy())
&gt; &gt; +                return DeleteByStatus(JSC::slowVersion(summary), *stubInfo);
&gt; 
&gt; does this work currently in the IC? Like deleting via window proxy?

No. I replaced it with an assert.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:115
&gt; &gt; +            if (access.usesPolyProto())
&gt; &gt; +                return DeleteByStatus(JSC::slowVersion(summary), *stubInfo);
&gt; 
&gt; is this even possible? Delete doesn&apos;t do anything on the prototype chain.
&gt; Seems like it should be an assert or just drop the line entirely
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:131
&gt; &gt; +                ASSERT_UNUSED(offset, offset == access.offset());
&gt; 
&gt; how is this correct if we fail to find the transition?
If there is a valid access case for it, the transition should be valid, no? Or am I missing something?

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4651
&gt; &gt; +        for (const DeleteByIdVariant&amp; variant : deleteByStatus.variants()) {
&gt; &gt; +            m_graph.registerStructure(variant.oldStructure());
&gt; &gt; +            if (variant.newStructure())
&gt; &gt; +                m_graph.registerStructure(variant.newStructure());
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        MultiDeleteByOffsetData* data = m_graph.m_multiDeleteByOffsetData.add();
&gt; &gt; +        data-&gt;variants = deleteByStatus.variants();
&gt; &gt; +        data-&gt;identifierNumber = identifierNumber;
&gt; &gt; +        set(destination,
&gt; &gt; +            addToGraph(MultiDeleteByOffset, OpInfo(data), base));
&gt; 
&gt; if all of these are delete misses (and all either the non-configurable or
&gt; the configurable kind), can we just turn this into a CheckStructure followed
&gt; by &quot;true&quot; or &quot;false&quot; ? Seems like that&apos;s more efficient for other analyses

Ditto.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6030
&gt; &gt; +            handleDeleteById(bytecode.m_dst, base, identifierNumber, deleteByStatus);
&gt; 
&gt; what about delete by val when the identifier is monotonic? If you don&apos;t do
&gt; that in this patch, please file a bug to do it. (You can see what we do for
&gt; get_by_val)

Will do.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1345
&gt; &gt; +        addBaseCheck(indexInBlock, node, baseValue, m_graph.registerStructure(variant.oldStructure()));
&gt; 
&gt; this seems to indicate we must be exitOK to begin with

There was already an assert, but I moved it up.

&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8200
&gt; &gt; +            results.append(m_out.anchor(variant.result() ? m_out.intPtrOne : m_out.intPtrZero));
&gt; 
&gt; This is wrong for booleans. We expect them to be i32. I wonder why nothing
&gt; is actually crashing because of this in validation.
&gt; 
&gt; Anyways, you want m_out.booleanTrue and m_out.booleanFalse

Done, with test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629885</commentid>
    <comment_count>9</comment_count>
      <attachid>393539</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-13 15:31:51 -0700</bug_when>
    <thetext>Created attachment 393539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629887</commentid>
    <comment_count>10</comment_count>
      <attachid>393539</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-13 15:32:30 -0700</bug_when>
    <thetext>Comment on attachment 393539
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:125
&gt; +

oops, will fix after review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629895</commentid>
    <comment_count>11</comment_count>
      <attachid>393543</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-13 15:40:34 -0700</bug_when>
    <thetext>Created attachment 393543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629915</commentid>
    <comment_count>12</comment_count>
      <attachid>393551</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-13 16:07:20 -0700</bug_when>
    <thetext>Created attachment 393551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629922</commentid>
    <comment_count>13</comment_count>
      <attachid>393552</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2020-03-13 16:21:03 -0700</bug_when>
    <thetext>Created attachment 393552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630652</commentid>
    <comment_count>14</comment_count>
      <attachid>393552</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-03-16 23:44:18 -0700</bug_when>
    <thetext>Comment on attachment 393552
Patch

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

r=me with a few comments

&gt; Source/JavaScriptCore/bytecode/DeleteByStatus.cpp:127
&gt; +                ASSERT_UNUSED(offset, offset == access.offset());

I think this should be moved after the branch on &quot;newStructure&quot;

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6076
&gt; +                    if (identifier.isCell()) {

this should be an assert. Also, it should be an assert in the get_by_val code. get_by_val is doing it wrong if it&apos;s not a cell, since we can&apos;t keep it alive.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1348
&gt; +

nit: you could also do:
origin = origin.withInvalidExit()
here and then use that everywhere below instead of repeatedly calling it

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1370
&gt; +        Node* clearValue = m_insertionSet.insertNode(indexInBlock, SpecNone, JSConstant, origin, OpInfo(m_graph.freezeStrong(JSValue())));

shouldn&apos;t this also be withInvalidExit?

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1372
&gt; +            indexInBlock, SpecNone, PutByOffset, origin, OpInfo(&amp;data), propertyStorage, node-&gt;child1(), Edge(clearValue));

can we assert node-&gt;child1() useKind is KnownCellUse? Or can wee just emit an edge with KnownCellUse directly to have the semantics be clearer?

Actually, looking at your code in mixup, it seems like we won&apos;t make this KnownCellUse. So I think that&apos;s required for proper exit semantics/bookkeeping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632147</commentid>
    <comment_count>15</comment_count>
    <who name="Justin Michaud">justin</who>
    <bug_when>2020-03-20 10:13:13 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #14)
&gt; Comment on attachment 393552 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393552&amp;action=review
&gt; 
&gt; r=me with a few comments
&gt; 

&gt; &gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1370
&gt; &gt; +        Node* clearValue = m_insertionSet.insertNode(indexInBlock, SpecNone, JSConstant, origin, OpInfo(m_graph.freezeStrong(JSValue())));
&gt; 
&gt; shouldn&apos;t this also be withInvalidExit?

If we exit before executing this node, we haven&apos;t changed any state yet, right? I am still not sure how the exit semantics work.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:1372
&gt; &gt; +            indexInBlock, SpecNone, PutByOffset, origin, OpInfo(&amp;data), propertyStorage, node-&gt;child1(), Edge(clearValue));
&gt; 
&gt; can we assert node-&gt;child1() useKind is KnownCellUse? Or can wee just emit
&gt; an edge with KnownCellUse directly to have the semantics be clearer?
&gt; 
&gt; Actually, looking at your code in mixup, it seems like we won&apos;t make this
&gt; KnownCellUse. So I think that&apos;s required for proper exit
&gt; semantics/bookkeeping

We do, in addBaseCheck right? 

addBaseCheck(indexInBlock, node, baseValue, m_graph.registerStructure(variant.oldStructure()));
        node-&gt;child1().setUseKind(KnownCellUse);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632294</commentid>
    <comment_count>16</comment_count>
      <attachid>394131</attachid>
    <who name="Justin Michaud">justin</who>
    <bug_when>2020-03-20 14:41:13 -0700</bug_when>
    <thetext>Created attachment 394131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637522</commentid>
    <comment_count>17</comment_count>
      <attachid>395408</attachid>
    <who name="Justin Michaud">justin</who>
    <bug_when>2020-04-03 14:06:45 -0700</bug_when>
    <thetext>Created attachment 395408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637721</commentid>
    <comment_count>18</comment_count>
      <attachid>395408</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-04 11:58:10 -0700</bug_when>
    <thetext>Comment on attachment 395408
Patch

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

Commented, since I found one GC bug.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6095
&gt; +                auto identifier = CacheableIdentifier::createFromIdentifierOwnedByCodeBlock(m_inlineStackTop-&gt;m_profiledBlock, uid);

This is not correct. Please check https://bugs.webkit.org/show_bug.cgi?id=209698 &amp; https://trac.webkit.org/changeset/259175/webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637722</commentid>
    <comment_count>19</comment_count>
      <attachid>395408</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-04 12:06:39 -0700</bug_when>
    <thetext>Comment on attachment 395408
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6095
&gt;&gt; +                auto identifier = CacheableIdentifier::createFromIdentifierOwnedByCodeBlock(m_inlineStackTop-&gt;m_profiledBlock, uid);
&gt; 
&gt; This is not correct. Please check https://bugs.webkit.org/show_bug.cgi?id=209698 &amp; https://trac.webkit.org/changeset/259175/webkit.

Easiest fix is using CacheableIdentifier obtained from deleteByStatus.singleIdentifier() :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638105</commentid>
    <comment_count>20</comment_count>
      <attachid>395569</attachid>
    <who name="Justin Michaud">justin</who>
    <bug_when>2020-04-06 08:37:01 -0700</bug_when>
    <thetext>Created attachment 395569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638111</commentid>
    <comment_count>21</comment_count>
      <attachid>395571</attachid>
    <who name="Justin Michaud">justin</who>
    <bug_when>2020-04-06 09:14:30 -0700</bug_when>
    <thetext>Created attachment 395571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638212</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-06 11:48:08 -0700</bug_when>
    <thetext>Committed r259583: &lt;https://trac.webkit.org/changeset/259583&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395571.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638214</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-06 11:49:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/61352184&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392619</attachid>
            <date>2020-03-05 13:47:53 -0800</date>
            <delta_ts>2020-03-05 14:00:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200305134752.patch</filename>
            <type>text/plain</type>
            <size>58444</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NTc1NjQ1NmUzYjczNzQ1MjMzYmJhM2Y5NzliOTEwMWExZmI5ODc5Li44ZTE4NWM2ODEyN2Q4ZTBi
MGJkY2VmZTQyY2M1NjlkMjYyMWZjOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMC0wMy0wNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhl
IERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biB3ZSBzZWUgdGhhdCB0aGUgZGVsZXRlQnlJZCBpbmxpbmUgY2FjaGUgb25seSBzYXcgb25lIHN0
cnVjdHVyZSwgd2UgaW5saW5lIGl0IGludG8gdGhlIERGRy4gVGhpcyBpbnZvbHZlcworICAgICAg
ICBjcmVhdGluZyBhIG5ldyBub2RlLCBGaWx0ZXJEZWxldGVCeVN0YXR1cywgYW5kIHRoZW4gdHVy
bmluZyB0aGVzZSBEZWxldGVCeUlkIG5vZGVzIGludG8gYSBGaWx0ZXJEZWxldGVCeVN0YXR1cywK
KyAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsIFB1dEJ5T2Zmc2V0LCB0aGVuIFB1dFN0cnVjdHVyZS4g
VGhlIGxvZ2ljIGZvciBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgCisgICAgICAgIFB1dEJ5SWQsIGdpdmluZyBpbmxpbmVkIGZ1bmN0aW9ucyB0aGUgb3Bw
b3J0dW5pdHkgdG8gdXNlIG9ubHkgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcKKyAgICAgICAgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRp
b24uCisKKyAgICAgICAgVGhlIGJlbmNobWFyayBzaG93cyBUT0RPLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKToKKyAg
ICAgICAgKiBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQpOgorICAgICAgICAoSlND
OjpEZWxldGVCeUlkVmFyaWFudDo6fkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjphdHRlbXB0VG9NZXJnZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50
Ojp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJr
SWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2xkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RGVs
ZXRlQnlJZFZhcmlhbnQ6Om5ld1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjpyZXN1bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6
b2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmRlc3Ryb3lz
QnV0dGVyZmx5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJv
cGVydHlVbnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBz
KToKKyAgICAgICAgKiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRl
bGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6RGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlND
OjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3Rh
dHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpt
ZXJnZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeVN0YXR1czo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
ZHVtcCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkRGVsZXRlQnlTdGF0
dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKiBi
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVz
ZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKToKKyAgICAg
ICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6CisgICAgICAgICog
ZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgor
CiAyMDIwLTAzLTAyICBQYXVsbyBNYXRvcyAgPHBtYXRvc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IEZpeCBKU0MgMzJiaXQgYWxpZ25tZW50IGluY3JlYXNlIGdjYyB3YXJuaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWFiZDE4NDYwMWJlY2JhMzczMmZhOWM4MTljYmE3
YzM4NThhYjQxMS4uOTYwMjZhMWRmZmMyOGI0YmEzMjc1YTY5Y2E2MDA4OTQ5ZjBhOTcxZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTAyLDYgKzUwMiw4IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvQ29k
ZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKICAgICBieXRlY29kZS9EYXRh
Rm9ybWF0LmgKKyAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCisgICAgYnl0ZWNvZGUv
RGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuaAogICAg
IGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmI3NDU2NTE3Zjhm
NzRjNjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1ZC4uNWRiZTM3NDc2NTZkZDUzZTUxZjc2MzAzMzA2
MDRjMGE5OWU3NzlhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzgsNyAr
MTE3OCw5IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBF
Q0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBC
RSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzExRkEzMjI0MERCMUQzMDAz
RDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlk
VmFyaWFudC5oICovOyB9OwogCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJv
cGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzNBRDA2MjkyM0ZG
NjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRl
QnlTdGF0dXMuaCAqLzsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVkdWNl
TG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAq
LzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4RDdG
QTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdD
RCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTcyLDcgKzM5NzQs
MTEgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBEMzE4
QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBC
RSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRW
YXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeUlk
VmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVCeUlkVmFyaWFudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTkwRDk2MjQwMDkzNDkwMEY4OTFDOSAvKiBE
ZWxldGVCeVN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVCeVN0YXR1cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAv
KiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczQUQw
NjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWxldGVCeVN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5MzIy
RTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgcGF0aCA9IGIzL0IzUmVk
dWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTk1
MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHBhdGgg
PSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODIzOSw2ICs4MjQ1LDEwIEBACiAJCQkJMEZDNzEyREQxN0NEODc3
ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovLAogCQkJCUZFNTA2
ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwICovLAogCQkJCUZF
NTA2ODY0MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCAqLywKKwkJCQk3
MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuY3BwICovLAorCQkJ
CTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovLAorCQkJ
CTczMTkwRDk2MjQwMDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0YXR1cy5jcHAgKi8sCisJCQkJ
NzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi8sCiAJCQkJMEZC
QzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLywKIAkJCQkwRkJD
MEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLywKIAkJCQkwRjJFQkJB
QTFERURGOTRFMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgKi8sCkBAIC05MjEy
LDYgKzkyMjIsOCBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNv
dXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4NSAv
KiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3M0JC
MURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0
ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAwNTYw
OUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0UxN0Ew
QkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKaW5kZXggNzZmMWM2OTQ4NWM2ZmNiZWU0ODdlNWFjOTg2Y2E0NjM2
MzUzYWViZS4uNWU2YTE3NDU3YWJmYzcyMDQ2YmIxYjlmOWY4MWNlZGQ0YmIxNzYyNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjE4LDYgKzIxOCw4IEBAIGJ5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcAogYnl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAKIGJ5dGVjb2RlL0RlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHAKIGJ5dGVjb2RlL0RlZmVycmVkU291cmNlRHVtcC5jcHAK
K2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAorYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQu
Y3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAogYnl0ZWNvZGUvRXZhbENvZGVC
bG9jay5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDkxZWVmYTAwOThl
NjM1YTcxZTZiNzIxZmJlOGMwYTFmMjllMTllOTYuLjlhYWY2N2U2OWYwZmQwZGQwNDljZjk0M2Qy
NzBjMTA1ZGI2MTE4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xNDk5LDYgKzE0OTksOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0
dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAg
ICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9y
LT52YWx1ZS5wdXRTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5pbnMpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
aW5TdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVzKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmRlbGV0
ZVN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlh
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYmJlMTMwNThlYTE2N2IwNTkxZmE0NmIxNjE2ODk4ZDg2MzhkNmYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5SWRWYXJpYW50LmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJE
ZWxldGVCeUlkVmFyaWFudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlh
bnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdCwKKyAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCkKKyAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAsIG1fb2xkU3RydWN0dXJl
KG9sZFN0cnVjdHVyZSkKKyAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKKyAgICAs
IG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIp
KQoreworICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX29mZnNldCA9PSBpbnZh
bGlkT2Zmc2V0KQorICAgICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZSk7CisgICAgZWxzZQorICAg
ICAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQ6On5EZWxl
dGVCeUlkVmFyaWFudCgpIHsgfQorCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlh
bnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0gb3RoZXI7
Cit9CisKK0RlbGV0ZUJ5SWRWYXJpYW50JiBEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNv
bnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBtX2lkZW50aWZpZXIgPSBvdGhl
ci5tX2lkZW50aWZpZXI7CisgICAgbV9yZXN1bHQgPSBvdGhlci5tX3Jlc3VsdDsKKyAgICBtX29s
ZFN0cnVjdHVyZSA9IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIG1fbmV3U3RydWN0dXJlID0g
b3RoZXIubV9uZXdTdHJ1Y3R1cmU7CisgICAgbV9vZmZzZXQgPSBvdGhlci5tX29mZnNldDsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgRGVsZXRlQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01l
cmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFtX2lkZW50
aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChtX3Jlc3VsdCAhPSBvdGhlci5tX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRl
bnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29mZnNldCAhPSBv
dGhlci5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2xkU3Ry
dWN0dXJlICE9IG90aGVyLm1fb2xkU3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgQVNTRVJUKG1fbmV3U3RydWN0dXJlID09IG90aGVyLm1fbmV3U3RydWN0dXJlKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0
ZShTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdh
dGUodmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGlmIChtX29sZFN0cnVjdHVyZSkKKyAgICAgICAg
bV9vbGRTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVj
dHVyZSkKKyAgICAgICAgbV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQor
Cit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgZHVtcEluQ29udGV4dChvdXQsIDApOworfQorCit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50
OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KikgY29uc3QKK3sK
KyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBvdXQucHJpbnQoImlkPSciLCBtX2lkZW50aWZpZXIs
ICInLCByZXN1bHQ9IiwgbV9yZXN1bHQpOworICAgIGlmIChtX29sZFN0cnVjdHVyZSkKKyAgICAg
ICAgb3V0LnByaW50KCIsICIsICptX29sZFN0cnVjdHVyZSk7CisgICAgaWYgKG1fbmV3U3RydWN0
dXJlKQorICAgICAgICBvdXQucHJpbnQoIiAtPiAiLCAqbV9uZXdTdHJ1Y3R1cmUpOworICAgIG91
dC5wcmludCgiLCBvZmZzZXQgPSAiLCBvZmZzZXQoKSk7CisgICAgb3V0LnByaW50KCI+Iik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNGY5Zjk5OGRkNzdkNjNi
MmY5MDdkNWM5NGY0N2U0NDg0N2QzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaApAQCAtMCwwICsxLDk0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ2FsbExpbmtT
dGF0dXMuaCIKKyNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIgorI2luY2x1
ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisjaW5jbHVk
ZSA8d3RmL0JveC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbExpbmtTdGF0dXM7
CitjbGFzcyBEZWxldGVCeVN0YXR1czsKK3N0cnVjdCBEdW1wQ29udGV4dDsKKworY2xhc3MgRGVs
ZXRlQnlJZFZhcmlhbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIERlbGV0ZUJ5SWRWYXJpYW50KAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBib29s
IHJlc3VsdCwKKyAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3V0cmUsIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7CisKKyAgICB+RGVsZXRlQnlJZFZhcmlhbnQoKTsK
KworICAgIERlbGV0ZUJ5SWRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisgICAg
RGVsZXRlQnlJZFZhcmlhbnQmIG9wZXJhdG9yPShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOwor
CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsg
fQorICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7
IH0KKyAgICBib29sIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9CisKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorCisgICAg
Ym9vbCBkZXN0cm95c0J1dHRlcmZseShib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdCB7IHJldHVy
biAhbV9uZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgbV9vbGRTdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIW1fbmV3U3RydWN0dXJlLT5tYXlIYXZlSW5kZXhpbmdI
ZWFkZXIobXVzdENoZWNrQ2VsbCk7IH0KKworICAgIGJvb2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29u
c3QgeyByZXR1cm4gb2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldDsgfQorCisgICAgYm9vbCBhdHRl
bXB0VG9NZXJnZShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpOworCisgICAgdm9pZCB2
aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQg
ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CisKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVy
KQorICAgIHsKKyAgICAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2lkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9pZGVudGlmaWVyKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9vbGRTdHJ1Y3R1cmUgPT0gb3RoZXIubV9vbGRTdHJ1Y3R1cmU7CisgICAgfQorCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBEZWxldGVCeVN0YXR1czsKKworICAgIGJvb2wgbV9yZXN1bHQ7
CisgICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fbmV3U3Ry
dWN0dXJlOworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OworICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMTAxMDQ4ZDRkYjVmZWMyZTE4YjM4MTIyYzA5ZDZlZTE5NmIxMzA0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApA
QCAtMCwwICsxLDI4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgor
CisjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRp
ZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c1V0aWxzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTU2NvcGUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIEdldHRlclNldHRlcjsKK30K
KworYm9vbCBEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFy
aWFudCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFy
aWFudHMsIHZhcmlhbnQpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29t
cHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQoreworICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKKworICAg
IERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKworI2lmIEVOQUJMRShERkdfSklUKQorICAgIHJlc3Vs
dCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBs
b2NrZXIsIGJhc2VsaW5lQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSku
c3R1YkluZm8pOworCisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xv
d1ZlcnNpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKGRpZEV4aXQpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRXhpdFNpdGVEYXRhKTsKKyNlbmRp
ZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIEVOQUJMRShKSVQpCitEZWxldGVCeVN0
YXR1czo6RGVsZXRlQnlTdGF0dXMoU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnksIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBzd2l0Y2ggKHN1bW1hcnkpIHsKKyAgICBjYXNlIFN0
dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlvbjoKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3Jt
YXRpb247CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6U2ltcGxl
OgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpNYWtlc0NhbGxzOgorICAgIGNhc2UgU3R1Yklu
Zm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoQW5kTWFrZXNDYWxsczoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9T
dW1tYXJ5OjpUYWtlc1Nsb3dQYXRoOgorICAgICAgICBtX3N0YXRlID0gc3R1YkluZm8udG9va1Ns
b3dQYXRoID8gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIDogTGlrZWx5VGFrZXNTbG93UGF0aDsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0
aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiBibG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0dWJJ
bmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2stPnZt
KCksIHN0dWJJbmZvKTsKKyAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAgICAg
cmV0dXJuIERlbGV0ZUJ5U3RhdHVzKHN1bW1hcnksICpzdHViSW5mbyk7CisKKyAgICBEZWxldGVC
eVN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1wbGU7CisgICAgc3dpdGNo
IChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Cisg
ICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhOb0luZm9ybWF0aW9uKTsKKworICAgIGNhc2Ug
Q2FjaGVUeXBlOjpTdHViOiB7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBsaXN0ID0gc3R1
YkluZm8tPnUuc3R1YjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGxpc3RJbmRleCA9IDA7IGxp
c3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKKyAgICAgICAgICAgIGNvbnN0
IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7CisgICAgICAgICAgICBp
ZiAoYWNjZXNzLnZpYVByb3h5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3Rh
dHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisKKyAgICAgICAgICAg
IGlmIChhY2Nlc3MudXNlc1BvbHlQcm90bygpKQorICAgICAgICAgICAgICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworCisgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50
eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAg
ICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CisgICAgICAg
ICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBh
Y2Nlc3MudHlwZSgpID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2UsIHN0
cnVjdHVyZSwgbnVsbHB0ciwgaW52YWxpZE9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFj
Y2Vzc0Nhc2U6OkRlbGV0ZTogeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5
KHN0cnVjdHVyZSwgYWNjZXNzLmlkZW50aWZpZXIoKS51aWQoKSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgb2Zmc2V0ID09IGFjY2Vzcy5vZmZzZXQoKSk7
CisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1Yklu
Zm8pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50
IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgdHJ1ZSwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGFjY2Vzcy5vZmZzZXQoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBl
bmRWYXJpYW50KHZhcmlhbnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlT
dGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIERl
bGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJz
aW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKCk7Cit9CisKK0RlbGV0ZUJ5
U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9jayogYmFzZWxp
bmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLAorICAgIElDU3RhdHVzQ29udGV4dFN0
YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAgICBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBF
eGl0RmxhZyBkaWRFeGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShiYXNlbGluZUJsb2NrLCBieXRl
Y29kZUluZGV4KTsKKworICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogY29udGV4
dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3Jp
Z2luKTsKKworICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25zdCBEZWxldGVCeVN0YXR1cyYg
cmVzdWx0KSAtPiBEZWxldGVCeVN0YXR1cyB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlz
SW5saW5lZChjb2RlT3JpZ2luKSkgeworICAgICAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIGJh
c2VsaW5lUmVzdWx0ID0gY29tcHV0ZUZvckJhc2VsaW5lKAorICAgICAgICAgICAgICAgICAgICBi
YXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7CisgICAg
ICAgICAgICAgICAgYmFzZWxpbmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYmFzZWxpbmVSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
ZGlkRXhpdC5pc1NldChFeGl0RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAgICAgRGVsZXRl
QnlTdGF0dXMgcmVzdWx0OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAorICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXpl
ZENvZGVCbG9jaywgc3RhdHVzLnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxlc3MocmVzdWx0
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0dXMuZGVsZXRlU3RhdHVzKQorICAgICAg
ICAgICAgcmV0dXJuIGJsZXNzKCpzdGF0dXMuZGVsZXRlU3RhdHVzKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY29tcHV0ZUZvckJhc2VsaW5lKGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRl
Y29kZUluZGV4LCBkaWRFeGl0KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKK0RlbGV0
ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgaWYg
KG9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE9ic2Vy
dmVkVGFrZXNTbG93UGF0aCk7CisgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKExpa2VseVRha2Vz
U2xvd1BhdGgpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjptZXJnZShjb25zdCBEZWxldGVC
eVN0YXR1cyYgb3RoZXIpCit7CisgICAgaWYgKG90aGVyLm1fc3RhdGUgPT0gTm9JbmZvcm1hdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBtZXJnZVNsb3cgPSBbJl0gKCkgeworICAg
ICAgICBpZiAob2JzZXJ2ZWRTbG93UGF0aCgpIHx8IG90aGVyLm9ic2VydmVkU2xvd1BhdGgoKSkK
KyAgICAgICAgICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnRoaXMgPSBEZWxldGVCeVN0YXR1cyhMaWtl
bHlUYWtlc1Nsb3dQYXRoKTsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAg
Y2FzZSBOb0luZm9ybWF0aW9uOgorICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICByZXR1
cm47CisKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gb3RoZXIubV9z
dGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKworICAgICAgICBmb3IgKGF1
dG8mIG90aGVyVmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgICAgIGlmICgh
YXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBtZXJn
ZVNsb3coKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExpa2VseVRh
a2VzU2xvd1BhdGg6CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIHJl
dHVybiBtZXJnZVNsb3coKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0
JiBzZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1cm47Cisg
ICAgbV92YXJpYW50cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgWyZdIChhdXRvJiB2YXJp
YW50KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiAhc2V0LmNvbnRhaW5zKHZhcmlhbnQu
b2xkU3RydWN0dXJlKCkpOworICAgICAgICB9KTsKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5
KCkpCisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworfQorCit2b2lkIERlbGV0ZUJ5
U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3Ig
KERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFu
dC52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6bWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChEZWxldGVCeUlkVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsK
KyAgICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlv
biIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50
KCJTaW1wbGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRo
OgorICAgICAgICBvdXQucHJpbnQoIkxpa2VseVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgi
T2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQu
cHJpbnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0
YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjFiZjAwMmQ0NmZlNGNkYzYzOGE3NWNmZTI0YzgyMTIwZDc2MzIy
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlTdGF0dXMuaApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVhYmxl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiQ29k
ZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxl
dGVCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0
dXNNYXAuaCIKKyNpbmNsdWRlICJTdHViSW5mb1N1bW1hcnkuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEFjY2Vzc0Nhc2U7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbzsKKworY2xhc3MgRGVsZXRlQnlTdGF0dXMgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gU3RhdGUgOiB1aW50OF90IHsKKyAgICAg
ICAgLy8gSXQncyB1bmNhY2hlZCBzbyB3ZSBoYXZlIG5vIGluZm9ybWF0aW9uLgorICAgICAgICBO
b0luZm9ybWF0aW9uLAorICAgICAgICAvLyBJdCdzIGNhY2hlZCBmb3IgYSBzaW1wbGUgYWNjZXNz
LgorICAgICAgICBTaW1wbGUsCisgICAgICAgIC8vIEl0IHdpbGwgbGlrZWx5IHRha2UgdGhlIHNs
b3cgcGF0aC4KKyAgICAgICAgTGlrZWx5VGFrZXNTbG93UGF0aCwKKyAgICAgICAgLy8gSXQgaGFz
IGJlZW4gc2VlbiB0byB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAgIE9ic2VydmVkVGFrZXNT
bG93UGF0aCwKKyAgICB9OworCisgICAgRGVsZXRlQnlTdGF0dXMoKQorICAgICAgICA6IG1fc3Rh
dGUoTm9JbmZvcm1hdGlvbikKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgRGVsZXRlQnlT
dGF0dXMoU3RhdGUgc3RhdGUpCisgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChzdGF0ZSAhPSBTaW1wbGUpOworICAgIH0KKworICAgIHN0YXRpYyBEZWxldGVC
eVN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAm
IGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgZGZnQ29udGV4dFN0YWNrLCBDb2Rl
T3JpZ2luKTsKKworICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQor
CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gTm9JbmZvcm1hdGlv
bjsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KKyAg
ICBib29sIG9ic2VydmVkU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IE9ic2Vy
dmVkVGFrZXNTbG93UGF0aDsgfQorICAgIGJvb2wgaXNTaW1wbGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlID09IFNpbXBsZTsgfQorICAgIGNvbnN0IFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwg
MT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92YXJpYW50czsgfQorCisgICAgRGVsZXRlQnlTdGF0
dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKworICAgIC8vIEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUg
c2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNldC4gVGhpcyBtYXkg
YmUgYXBwcm94aW1hdGUuCisgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0Jik7CisK
KyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBtYXJrSWZD
aGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoVk0mKSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsK
KworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8m
KTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CisKKyAgICBzdGF0aWMg
RGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFw
JiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGlj
IERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KAorICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxEZWxldGVC
eUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1
c01hcC5oCmluZGV4IGRiZDVhODgyMzEyNDIyZDRlOGIyZWRkM2I3OTgyMmM3NjdhN2JiYzguLmYw
MzE5MDExNWEzYjhlNDJiNGViOGI4NzQwM2FmMmQ4NGUwMzc0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNz
IENvZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwogY2xhc3MgSW5CeUlkU3RhdHVzOwogY2xh
c3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0dXJl
U3R1YkluZm87CiBzdHJ1Y3QgQnlWYWxJbmZvOwogCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBJ
Q1N0YXR1cyB7CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIgfTsKICAgICBJ
bkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIFB1dEJ5SWRTdGF0dXMqIHB1
dFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlU3RhdHVzIHsg
bnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVzLCBD
b2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCBjOTQ4NGI0
ODVhZGZlNmRhYjRjY2YyYjdhYTY0NWJmNzg4OTgwODMyLi5kNjE1YTEzZDljM2M0NzVhNjE2YzJl
NTQ3NzI5NTU0NjE2OWM0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBAIFJlY29yZGVkU3Rh
dHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3Ro
ZXIpCiAgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CiAgICAgcHV0cyA9IFdURk1vdmUo
b3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RGTW92ZShvdGhlci5pbnMpOworICAgIGRlbGV0ZXMg
PSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwogICAgIHNocmlua1RvRml0KCk7CiAgICAgcmV0dXJu
ICp0aGlzOwogfQpAQCAtNzUsMTAgKzc2LDIwIEBAIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0
dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVsZXRlQnlTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6
OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IERl
bGV0ZUJ5U3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVl
PERlbGV0ZUJ5U3RhdHVzPihzdGF0dXMpOworICAgIERlbGV0ZUJ5U3RhdHVzKiByZXN1bHQgPSBz
dGF0dXNQdHIuZ2V0KCk7CisgICAgZGVsZXRlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9y
aWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9p
ZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgc2xvdFZpc2l0
b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKICAgICAgICAgcGFpci5zZWNvbmQt
PnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZWxl
dGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOwog
fQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90
VmlzaXRvcikKQEAgLTg5LDYgKzEwMCw4IEBAIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lm
Q2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAgICBwYWlyLnNlY29uZC0+bWFy
a0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGlucykKICAgICAg
ICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8m
IHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZp
c2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0
aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5oCmluZGV4IGIzNTVlOWI2MjMzODQ2MjkyNjQ4MmM3YzFiOTFmNDIxZmZlNjIw
ZDAuLjllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4ZDA1NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgor
I2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNp
bmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCkBAIC00
Nyw2ICs0OCw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBHZXRCeVN0YXR1cyog
YWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEdldEJ5U3RhdHVzJik7CiAg
ICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29u
c3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNv
bnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICBEZWxldGVCeVN0YXR1
cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IERlbGV0ZUJ5U3Rh
dHVzJik7CiAgICAgCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOwogICAg
IHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKQEAgLTYzLDEyICs2NSwxNCBAQCBzdHJ1
Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMoZ2V0cyk7CiAgICAgICAgIGZ1bmMo
cHV0cyk7CiAgICAgICAgIGZ1bmMoaW5zKTsKKyAgICAgICAgZnVuYyhkZWxldGVzKTsKICAgICB9
CiAgICAgCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2lu
LCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0czsKICAgICBWZWN0b3I8c3RkOjpw
YWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3RhdHVzPj4+IHB1dHM7CiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8SW5CeUlkU3Rh
dHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxEZWxldGVCeVN0YXR1cz4+PiBkZWxldGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZTk1ODAwYWZmMjY3OTVhNDJkOTQ2Mzk0Y2JkZTUzMDk2
ODhjZGM0Ni4uZWEyMjA0YzBjNDAyZmM4Y2NjNDhjNDlmNDQyMjRmN2NlYTNlNDkzZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaApAQCAtNDEwNiw2ICs0MTA2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxp
bWkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0
ZUJ5U3RhdHVzOgogICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJlYWs7CiAK
QEAgLTQyODcsNiArNDI4OCwxMyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+ZGVsZXRlQnlTdGF0
dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDUz
YjAxNDgzZWQ0MTQ5MDg0ODc1MWRkYjMzNjlkMjE2YmNiNWQ1YzguLmJlNjcxMjFjZTMxMzg1ZGZk
OTVlN2RiNDE4OWJkOGNjZjc4OTg4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA3LDYg
KzQwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgpAQCAtMTI2Niw3ICsxMjY3LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOiB7CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogewogICAgICAgICAgICAgICAg
ICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2Rl
LT5yZW1vdmUobV9ncmFwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGQxZmEwYjMxNzg3NzJlZmY5ZGY0NGJjNThkZWY4MWJjOWQy
ZjFiMWQuLjA2ZjM0MWZiYTFjNzY5ZmMzYThiMGNjOTViNGU2NDkxN2E5N2I4ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00Nyw2
ICs0Nyw3IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJE
RkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0
YXR1cy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiR2V0QnlT
dGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTI0OCw2ICsyNDksOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LAogICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSk7CisKKyAg
ICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5h
dGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0
dXMpOwogICAgIAogICAgIC8vIEVpdGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBh
IGNoZWNrIGZvciB0aGlzIGNvbmRpdGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBj
b25kaXRpb24gbm8gbG9uZ2VyIGhvbGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hl
Y2sgY2FuIGJlIGVtaXR0ZWQuCkBAIC00NjEzLDYgKzQ2MTcsNzEgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMg
LSAxLCByZWdpc3Rlck9mZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlv
bik7CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQoCisgICAgVmly
dHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLAorICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzKQoreworICAgIGlmICgh
ZGVsZXRlQnlTdGF0dXMuaXNTaW1wbGUoKSB8fCBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNp
emUoKSAhPSAxIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgIHNl
dChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZv
KGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBBU1NFUlQoZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPT0gMSk7CisgICAgRGVs
ZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF07CisK
KyAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChG
aWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1
cykpLCBiYXNlKTsKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7Cisg
ICAgICAgIHNldChkZXN0aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4odmFyaWFudC5yZXN1
bHQoKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgbXVzdENoZWNrQ2Vs
bCA9IGZhbHNlOworICAgIGJvb2wgZGVzdHJveXNCdXR0ZXJmbHkgPSB2YXJpYW50LmRlc3Ryb3lz
QnV0dGVyZmx5KG11c3RDaGVja0NlbGwpOworCisgICAgaWYgKG11c3RDaGVja0NlbGwpIHsKKyAg
ICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlk
LCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVyRGVsZXRlQnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkRGVsZXRlQnlTdGF0dXMoY3VycmVudENvZGVP
cmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwgYmFzZSk7CisgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0
dXJlKCkpKSwgYmFzZSk7CisgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnRyYW5z
aXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIEFTU0VSVCh2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldCh2YXJpYW50Lm9m
ZnNldCgpKSk7CisKKyAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CisgICAgVHJhbnNpdGlvbiog
dHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgaWYgKGRlc3Ryb3lz
QnV0dGVyZmx5KSB7CisgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoSlNDb25z
dGFudCwgT3BJbmZvKG1fY29uc3RhbnROdWxsKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTnVrZVN0
cnVjdHVyZUFuZFNldEJ1dHRlcmZseSwgYmFzZSwgcHJvcGVydHlTdG9yYWdlKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpCisgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CisKKyAg
ICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0Rh
dGEuYWRkKCk7CisgICAgICAgIGRhdGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAg
ICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworCisgICAgICAg
IGFkZFRvR3JhcGgoCisgICAgICAgICAgICBQdXRCeU9mZnNldCwKKyAgICAgICAgICAgIE9wSW5m
byhkYXRhKSwKKyAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSwKKyAgICAgICAgICAgIGJhc2Us
CisgICAgICAgICAgICBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworICAgIH0KKworICAgIGFkZFRv
R3JhcGgoUHV0U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIHNldChk
ZXN0aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkpKTsKKyAg
ICByZXR1cm47Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAogICAgIE5v
ZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQ
dXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0KQogewpAQCAtNTk0Myw3
ICs2MDEyLDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cERlbEJ5SWQ+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFz
ZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07Ci0gICAgICAgICAg
ICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50
aWZpZXJOdW1iZXIpLCBiYXNlKSk7CisgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBkZWxldGVC
eVN0YXR1cyA9IERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAg
ICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChi
eXRlY29kZS5tX2RzdCwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X2lkKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGIyMzE4ZmUwM2FlZDQx
ZTAzMDk1ODdlN2RmOTA3NjljYjA0ZTNjNDkuLmJhYjc3YWYwZDNkODcxNjlmNjUwNzYxMTE4M2E1
YjNhNGMyYmZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC00NzMsNiArNDczLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
ICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRl
eCBlZTk4ZmFjMjMwNTM0OTkzMDU5NDhhN2M0MDJkZjM4ZDJiZjA2ZGViLi5mMTc0NWVjYWEwMTVh
OTZkZWJmMGRjMWE5YmFhOTI4MTIxZDM5NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtODYsNiArODYsNyBAQCBib29s
IGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
ICAgICAvLyBUaGVzZSBkbyBjbG9iYmVyIG1lbW9yeSwgYnV0IG5vdGhpbmcgdGhhdCBpcyBvYnNl
cnZhYmxlLiBJdCBtYXkgYmUgbmljZSB0byBzZXBhcmF0ZSB0aGUKICAgICAgICAgLy8gaGVhcHMg
aW50byB0aG9zZSB0aGF0IGFyZSBvYnNlcnZhYmxlIGFuZCB0aG9zZSB0aGF0IGFyZW4ndCwgYnV0
IHdlIGRvbid0IGRvIHRoYXQgcmlnaHQgbm93LgogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODQ0MApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjZjhmYTJlZmJhMzdmOTZkYzkwOTlk
NDk3MjUxODEuLjA4ZThhNDRkZDEzMTgxZjY0ODhmN2ZmZjNkNmU3ZTY1OTBiYTU5MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI0NSw2ICsyNDUsNyBAQCBi
b29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRC
eVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIERh
dGVHZXRJbnQzMk9yTmFOOgogICAgIGNhc2UgRGF0ZUdldFRpbWU6CiAgICAgY2FzZSBEYXRhVmll
d0dldEludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGU5N2RlMTBmNmY0Y2RjMTViYWVmYjEwYjdlYzYwNjI4Mjc4MzU5NTUuLjIzOGVhZjE5ODBl
ZTY5MDc4MzBjOWQyOTcwZWE2MWM3M2Q5NGE2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjU4MCw2ICsyNTgwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAg
ICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAx
NTUzYjE5YWY1MTM0NDJjMDNlYmVlYzA0ODBmMmIuLjFjY2E4YjJhYzQxY2JlN2Y0OTZkM2M5NmE3
YjhkZDEwMDAyZDU4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cApAQCAtMTA5LDYgKzEwOSw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMzQ1
NWI1YzI5ZjA3MGZlZjJmOTkxOTUyYmNmZjAwN2ZlYTkxNzI2Li4zZjdhZTk4OTczYzllMWE2MmVj
ZDFhNzJmOTI1N2Q3MzEwMjg1MWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApA
QCAtMjk3Niw2ICsyOTc2LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFz
PFB1dEJ5SWRTdGF0dXMqPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzRGVsZXRlQnlTdGF0dXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyRGVsZXRlQnlTdGF0dXM7Cisg
ICAgfQorCisgICAgRGVsZXRlQnlTdGF0dXMqIGRlbGV0ZUJ5U3RhdHVzKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChoYXNEZWxldGVCeVN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzPERlbGV0ZUJ5U3RhdHVzKj4oKTsKKyAgICB9CisKICAgICB2b2lkIGR1bXBDaGlsZHJlbihQ
cmludFN0cmVhbSYgb3V0KQogICAgIHsKICAgICAgICAgaWYgKCFjaGlsZDEoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlMjExZWE3N2Q4NTQxOTliYjg0NjNm
YWVjMzdiZjVjNDFjNWY5N2U3Li5kZmJmNWRiMzgwYmY1NmM5MmI3NjVlMTAxZTE3OTg3ZjA1ODMx
NmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC01MjYsNiAr
NTI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRl
ckdldEJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVySW5CeUlk
U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1
cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgLyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCiAgICAgbWFj
cm8oRGF0YVZpZXdHZXRJbnQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRo
ZSBnZXRzIGFyZSBtdXN0IGdlbmVyYXRlIGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBj
aGVja3MgKi8gXAogICAgIG1hY3JvKERhdGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlUmVzdWx0RG91YmxlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAwNWFj
ZGYyMzg3Njk3M2Y4OGU4MmI5YTczYjM0OWVlNzc5YjViOTg0Li5kMDBlYTYxZWEyOTVkMTY3MDNm
NTY2NTY4ZmFlOTk3MTY1MWExMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTEy
MjAsNiArMTIyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6
CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjU3MCw2ICsyNTcxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAg
ICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZp
bHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFs
bG9jYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRD
aGVja3MoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CmluZGV4IDI4ODg1OGIzOGMxNmE2NWE4YzhlYmRiOWQ0MzcwMTI4MzQ3MmE1MGEuLjhlZTkwOWIz
NjAxYzA3MDI2NTExOTQ0Y2JhZmE2NjhlYjIzN2I4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CkBAIC0xMzk1LDYgKzEzOTUsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgog
ICAgICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6CiAgICAgICAgIGNhc2UgRGF0YVZpZXdTZXQ6
CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIyZDE0MjliMmUwNTY0ZTYwMWEw
YzdmYzk2NjRiNTVlYWMuLjhhYzcxZmJhOGU4NDcwMGM5NzNkMTJiNzg0MWQzNGU3ZDI0ZTlmNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0z
NjEsNiArMzYxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0
ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEZpbHRlckdl
dEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAv
LyBXZSBkb24ndCB3YW50IHRoZXNlIHRvIGJlIG1vdmVkIGFueXdoZXJlIG90aGVyIHRoYW4gd2hl
cmUgd2UgcHV0IHRoZW0sIHNpbmNlIHdlIHdhbnQgdGhlbQogICAgICAgICAvLyB0byBjYXB0dXJl
ICJwcm9maWxpbmciIGF0IHRoZSBwb2ludCBpbiBjb250cm9sIGZsb3cgaGVyZSB0aGUgdXNlciBw
dXQgdGhlbS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYjAxOWQ4NWRmOWMy
NWIxMzA4OTkyYWU2NDdiNWVjOGEyNzUzYmM2Ni4uZmMyZTkzYjFkODhmYmM2MzUxYjYyM2Q3MzY5
Zjg3ZWQ5ZGNkN2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MTkwLDYgKzQxOTAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgbV9pbnRlcnBy
ZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggYjA3Y2IyNTc1ZDEwNjI3NzhkNGViMDc0ZGZjNWZhNjE2NjNkZDk2
MC4uNmE4ZjUxMmE5NjY0ZTYzMjUxZjcxZjgxYWM0MDk1NjcyNWQ1Zjc1OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MjU1
LDYgKzUyNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKaW5kZXggNzRl
YTYxOGU5MDExMjlhNTdlMmM4M2JiODkyYTc1YjdiODA2MzNiNy4uMGMzNWE1MzY1Y2M0NmVmM2M3
ODk5NDhmNGQyZTYwY2NmMDE3NmI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCkBAIC0xOTgsNiArMTk4LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAg
ICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgR2V0QnlPZmZzZXQ6IHsK
QEAgLTM5OSw2ICs0MDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAg
ICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkubm9kZSgp
ID09IGNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVjNjlkMWQzOGMxYzYxMDU5OWZkMzAyOTk3MzQzNjBj
YjIyN2FjYjIuLjUwN2E5OTI2Y2EwMzgxMmZlOTk5YzFkNjBhZmZlNGM1NjlhZTk1ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTM5Miw2
ICszOTIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAg
ICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggODAzNjM5MDdiOWUxNzI4MzI3NWIyN2E2OTUzMzE4ZGM0
ZTY3YjU5Yi4uYTRlYjM2MDk1ZTQ4YTU5N2ViNjZhZjcxZWRkNGVhNzczMjc5MDBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTU2OSw2
ICsxNTY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJ
ZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAg
IGNvbXBpbGVGaWx0ZXJJQ1N0YXR1cygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRGF0ZUdldEludDMyT3JOYU46CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3OWQyMTI5MWEwZGZlYjMyNzFiMTNjNjY4Mzc0MmYxZDVj
NjEzMzYuLmE4YmJhMWFmYzkyNWNiMDM3Y2Q1Mzk1NjEwNGNkN2EzNzdjYzNlOWEgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjAtMDMtMDUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUu
Y29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRoZSBERkcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ibGFja2JveCk6Cisg
ICAgICAgIChub0lubGluZS5ibGFja2JveC5kb0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5k
b0FsbG9jMSk6CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpz
OiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQuYmxh
Y2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3gudGVzdFNpbmdsZVN0cnVjdHVyZS5k
b0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5ibGFja2JveC50ZXN0U2luZ2xlU3RydWN0dXJl
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmds
ZVN0cnVjdHVyZS5kb0RlbGV0ZTIpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVj
dHVyZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLmRvQWxsb2MyKToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSk6CisgICAg
ICAgIChub0lubGluZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLnRlc3RFeGl0LmRvRGVsZXRl
Myk6CisgICAgICAgIChub0lubGluZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLnRlc3RFeGl0
KToKKwogMjAyMC0wMi0yNyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5j
b20+CiAKICAgICAgICAgUG9seSBwcm90byBzaG91bGQgd29yayB3aXRoIHByb3BlcnR5IGRlbGV0
ZSB0cmFuc2l0aW9ucwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkwZWI2
ZTU1MWRjOGU0MWRhYTg0ZDhhODliMjJlMjM1NzhmMjhlOQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcu
anMKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlm
ICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQi
KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0
dXJuIHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAg
ICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9
IGJsYWNrYm94KG9iai55KQorICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgcmV0dXJuIG9i
ai55Cit9Citub0lubGluZShkb0FsbG9jMSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAw
MDsgKytpKSB7CisgICAgZG9BbGxvYzEoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
ZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJv
cGVydHktZGZnLWlubGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2JhYmZkNDA3MWVkNDU0MTg0ZTYyZjJl
YzAzMzQxYzFhYzUzYjNlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRl
LXByb3BlcnR5LWRmZy1pbmxpbmUuanMKQEAgLTAsMCArMSw4NyBAQAorZnVuY3Rpb24gYXNzZXJ0
KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorbm9JbmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBi
bGFja2JveCh4KSB7CisgICAgcmV0dXJuIHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5j
dGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2MxKCkgewor
ICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSA1CisgICAgICAgIG9iai55ID0g
NworICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBhc3NlcnQoZGVsZXRl
IG9iai54KQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxv
YzEpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBk
b0FsbG9jMSgpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZSkKKworZnVu
Y3Rpb24gdGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0
ZTIobykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG8ueCkKKyAgICB9CisKKyAgICBmdW5jdGlv
biBkb0FsbG9jMigpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gNQor
ICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAg
ICAgZG9EZWxldGUyKG9iaikKKyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5s
aW5lKGRvQWxsb2MyKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAg
ICAgIGRvRGVsZXRlMih7IGksIGY6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgZTogNCB9
KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGks
IGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYjogNCB9KQorICAgICAgICBkb0RlbGV0
ZTIoeyBpLCBhOiA0IH0pCisgICAgICAgIGRvQWxsb2MyKCkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jMigpCisgICAgfQor
fQorbm9JbmxpbmUodGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSkKKworZnVuY3Rpb24gdGVzdEV4
aXQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUzKG9iaikgeworICAgICAgICBhc3NlcnQoZGVs
ZXRlIG9iai55KQorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTMpCisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQg
fSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAg
ZG9EZWxldGUzKHsgaSwgZjogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBlOiA0IH0pCisg
ICAgICAgIGRvRGVsZXRlMyh7IGksIGQ6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgYzog
NCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBiOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7
IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkgeworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUo
dGVzdEV4aXQpCisKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdElubGluZVNpbmdsZVN0cnVj
dHVyZSgpCit0ZXN0RXhpdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392621</attachid>
            <date>2020-03-05 14:00:28 -0800</date>
            <delta_ts>2020-03-06 13:47:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200305140028.patch</filename>
            <type>text/plain</type>
            <size>58450</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjNhNTU1Yzc5Mjc4OWM1NjZkODM2NmE1ZTI4ZTA2ODc2OWFhZDQzLi5mMGRmNWIwOWFjODgxMzk3
YjBmYTYzOTBjNzA4Y2FhYWRiNjExOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMC0wMy0wNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhl
IERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biB3ZSBzZWUgdGhhdCB0aGUgZGVsZXRlQnlJZCBpbmxpbmUgY2FjaGUgb25seSBzYXcgb25lIHN0
cnVjdHVyZSwgd2UgaW5saW5lIGl0IGludG8gdGhlIERGRy4gVGhpcyBpbnZvbHZlcworICAgICAg
ICBjcmVhdGluZyBhIG5ldyBub2RlLCBGaWx0ZXJEZWxldGVCeVN0YXR1cywgYW5kIHRoZW4gdHVy
bmluZyB0aGVzZSBEZWxldGVCeUlkIG5vZGVzIGludG8gYSBGaWx0ZXJEZWxldGVCeVN0YXR1cywK
KyAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsIFB1dEJ5T2Zmc2V0LCB0aGVuIFB1dFN0cnVjdHVyZS4g
VGhlIGxvZ2ljIGZvciBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgCisgICAgICAgIFB1dEJ5SWQsIGdpdmluZyBpbmxpbmVkIGZ1bmN0aW9ucyB0aGUgb3Bw
b3J0dW5pdHkgdG8gdXNlIG9ubHkgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcKKyAgICAgICAgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRp
b24uCisKKyAgICAgICAgVGhlIGJlbmNobWFyayBzaG93cyBUT0RPLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKToKKyAg
ICAgICAgKiBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQpOgorICAgICAgICAoSlND
OjpEZWxldGVCeUlkVmFyaWFudDo6fkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjphdHRlbXB0VG9NZXJnZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50
Ojp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJr
SWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2xkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RGVs
ZXRlQnlJZFZhcmlhbnQ6Om5ld1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjpyZXN1bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6
b2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmRlc3Ryb3lz
QnV0dGVyZmx5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJv
cGVydHlVbnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBz
KToKKyAgICAgICAgKiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRl
bGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6RGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlND
OjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3Rh
dHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpt
ZXJnZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeVN0YXR1czo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
ZHVtcCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkRGVsZXRlQnlTdGF0
dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKiBi
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVz
ZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKToKKyAgICAg
ICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6CisgICAgICAgICog
ZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgor
CiAyMDIwLTAzLTA1ICBQYXVsbyBNYXRvcyAgPHBtYXRvc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtKU0NPbmx5XSAzMi1iaXRzIHdhcm5pbmcgb24gbWVtc2V0IG9mIEpTVmFsdWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmN2M2NjYyZjdmZTU2NzA5ZjQ1MDk0YzA3M2Y1
NWM1MDgxY2E4ODdlLi4zNjg0OGMyNTYzNGZiN2E2NDYwYTZkNjI0OTI4ZDI0ZDAyMWM3MjlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MDIsNiArNTAyLDggQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9D
b2RlVHlwZS5oCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL0Rh
dGFGb3JtYXQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKKyAgICBieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5oCiAg
ICAgYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdm
OGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVkLi41ZGJlMzc0NzY1NmRkNTNlNTFmNzYzMDMz
MDYwNGMwYTk5ZTc3OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3OCw3
ICsxMTc4LDkgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2
MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87IH07CisJCTczMTFGQTMyMjQwREIxRDMw
MDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmggKi87IH07CiAJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQ
cm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3M0FEMDYyOTIz
RkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxl
dGVCeVN0YXR1cy5oICovOyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNSZWR1
Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5o
ICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNvbnRleHRJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjc5NThE
N0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5NzIsNyArMzk3
NCwxMSBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQz
MThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2
MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8q
IERlbGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQx
IC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzNB
RDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERlbGV0ZUJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTkz
MjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMvQjNS
ZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5
OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgcGF0
aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04MjM5LDYgKzgyNDUsMTAgQEAKIAkJCQkwRkM3MTJERDE3Q0Q4
Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJRkU1
MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8sCiAJCQkJ
RkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oICovLAorCQkJ
CTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8sCisJ
CQkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8sCisJ
CQkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLywKKwkJ
CQk3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLywKIAkJCQkw
RkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovLAogCQkJCTBG
QkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovLAogCQkJCTBGMkVC
QkFBMURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNhY2hlLmNwcCAqLywKQEAgLTky
MTIsNiArOTIyMiw4IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVk
U291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1
IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjcz
QkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3Rh
dHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVs
ZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1
NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3
QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NmYxYzY5NDg1YzZmY2JlZTQ4N2U1YWM5ODZjYTQ2
MzYzNTNhZWJlLi41ZTZhMTc0NTdhYmZjNzIwNDZiYjFiOWY5ZjgxY2VkZDRiYjE3NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTgsNiArMjE4LDggQEAgYnl0ZWNvZGUvREZH
RXhpdFByb2ZpbGUuY3BwCiBieXRlY29kZS9EYXRhRm9ybWF0LmNwcAogYnl0ZWNvZGUvRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNw
cAorYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCitieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5jcHAKIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29kZS9FdmFsQ29k
ZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTFlZWZhMDA5
OGU2MzVhNzFlNmI3MjFmYmU4YzBhMWYyOWUxOWU5Ni4uOWFhZjY3ZTY5ZjBmZDBkZDA0OWNmOTQz
ZDI3MGMxMDVkYjYxMTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTE0OTksNiArMTQ5OSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0
b3ItPnZhbHVlLnB1dFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmlucykKICAgICAgICAg
ICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1
ZS5pblN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmRlbGV0ZXMpCisgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuZGVs
ZXRlU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFy
aWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlh
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFiYmUxMzA1OGVhMTY3YjA1OTFmYTQ2YjE2MTY4OThkODYzOGQ2
ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlJZFZhcmlhbnQuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRlbGV0ZUJ5SWRWYXJpYW50LmgiCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK0RlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlkVmFy
aWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LAorICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KQorICAgIDogbV9yZXN1bHQocmVzdWx0KQorICAgICwgbV9vbGRTdHJ1Y3R1
cmUob2xkU3RydWN0dXJlKQorICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQorICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmll
cikpCit7CisgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSk7CisgICAgaWYgKG1fb2Zmc2V0ID09IGlu
dmFsaWRPZmZzZXQpCisgICAgICAgIEFTU0VSVCghbmV3U3RydWN0dXJlKTsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworfQorCitEZWxldGVCeUlkVmFyaWFudDo6fkRl
bGV0ZUJ5SWRWYXJpYW50KCkgeyB9CisKK0RlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlkVmFy
aWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgKnRoaXMgPSBvdGhl
cjsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQmIERlbGV0ZUJ5SWRWYXJpYW50OjpvcGVyYXRvcj0o
Y29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgIG1faWRlbnRpZmllciA9IG90
aGVyLm1faWRlbnRpZmllcjsKKyAgICBtX3Jlc3VsdCA9IG90aGVyLm1fcmVzdWx0OworICAgIG1f
b2xkU3RydWN0dXJlID0gb3RoZXIubV9vbGRTdHJ1Y3R1cmU7CisgICAgbV9uZXdTdHJ1Y3R1cmUg
PSBvdGhlci5tX25ld1N0cnVjdHVyZTsKKyAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0Owor
ICAgIHJldHVybiAqdGhpczsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1wdFRv
TWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlmICghIW1faWRl
bnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKG1fcmVzdWx0ICE9IG90aGVyLm1fcmVzdWx0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAobV9pZGVudGlmaWVyICYmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9p
ZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2Zmc2V0ICE9
IG90aGVyLm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9vbGRT
dHJ1Y3R1cmUgIT0gb3RoZXIubV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBBU1NFUlQobV9uZXdTdHJ1Y3R1cmUgPT0gb3RoZXIubV9uZXdTdHJ1Y3R1cmUpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OnZpc2l0QWdncmVn
YXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1faWRlbnRpZmllci52aXNpdEFnZ3Jl
Z2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAgICAg
ICBtX29sZFN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3Ry
dWN0dXJlKQorICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9
CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
K3sKKyAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlh
bnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAor
eworICAgIG91dC5wcmludCgiPCIpOworICAgIG91dC5wcmludCgiaWQ9JyIsIG1faWRlbnRpZmll
ciwgIicsIHJlc3VsdD0iLCBtX3Jlc3VsdCk7CisgICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAg
ICAgICBvdXQucHJpbnQoIiwgIiwgKm1fb2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9uZXdTdHJ1
Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiIC0+ICIsICptX25ld1N0cnVjdHVyZSk7CisgICAg
b3V0LnByaW50KCIsIG9mZnNldCA9ICIsIG9mZnNldCgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM0ZjlmOTk4ZGQ3N2Q2
M2IyZjkwN2Q1Yzk0ZjQ3ZTQ0ODQ3ZDM2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCkBAIC0wLDAgKzEsOTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgorI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCisjaW5j
bHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNs
dWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua1N0YXR1
czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOworc3RydWN0IER1bXBDb250ZXh0OworCitjbGFzcyBE
ZWxldGVCeUlkVmFyaWFudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgRGVsZXRlQnlJZFZhcmlhbnQoCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIGJv
b2wgcmVzdWx0LAorICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdXRyZSwgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKKworICAgIH5EZWxldGVCeUlkVmFyaWFudCgp
OworCisgICAgRGVsZXRlQnlJZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKyAg
ICBEZWxldGVCeUlkVmFyaWFudCYgb3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7
CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fb2xkU3RydWN0dXJl
OyB9CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX25ld1N0cnVjdHVy
ZTsgfQorICAgIGJvb2wgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKworICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisKKyAg
ICBib29sIGRlc3Ryb3lzQnV0dGVyZmx5KGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0IHsgcmV0
dXJuICFtX25ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBtX29sZFN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhbV9uZXdTdHJ1Y3R1cmUtPm1heUhhdmVJbmRleGlu
Z0hlYWRlcihtdXN0Q2hlY2tDZWxsKTsgfQorCisgICAgYm9vbCBpc1Byb3BlcnR5VW5zZXQoKSBj
b25zdCB7IHJldHVybiBvZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0OyB9CisKKyAgICBib29sIGF0
dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcik7CisKKyAgICB2b2lk
IHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90
VmlzaXRvciYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9p
ZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3Ro
ZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50
aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1faWRlbnRpZmll
cikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOworCisgICAgYm9vbCBtX3Jlc3Vs
dDsKKyAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdT
dHJ1Y3R1cmU7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIxMDEwNDhkNGRiNWZlYzJlMThiMzgxMjJjMDlkNmVlMTk2YjEzMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3Bw
CkBAIC0wLDAgKzEsMjg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgi
CisKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVu
dGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklDU3Rh
dHVzVXRpbHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJNb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOwor
fQorCitib29sIERlbGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRW
YXJpYW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92
YXJpYW50cywgdmFyaWFudCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpj
b21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYg
bWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCit7Cisg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2spOworCisg
ICAgRGVsZXRlQnlTdGF0dXMgcmVzdWx0OworCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgcmVz
dWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAg
IGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgp
KS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5z
bG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURf
UEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxFeGl0U2l0ZURhdGEpOworI2Vu
ZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgRU5BQkxFKEpJVCkKK0RlbGV0ZUJ5
U3RhdHVzOjpEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgeworICAgIGNhc2Ug
U3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRlID0gTm9JbmZv
cm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1w
bGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAgY2FzZSBTdHVi
SW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5m
b1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHViSW5mby50b29r
U2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Nsb3dQYXRoOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBD
b2RlQmxvY2sqIGJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCit7CisgICAgU3R1
YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFyeShibG9jay0+
dm0oKSwgc3R1YkluZm8pOworICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkpKQorICAgICAg
ICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKworICAgIERlbGV0
ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsKKyAgICBzd2l0
Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoK
KyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOworCisgICAgY2Fz
ZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIGxpc3QgPSBz
dHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZvciAodW5zaWduZWQgbGlzdEluZGV4ID0gMDsg
bGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRleCkgeworICAgICAgICAgICAgY29u
c3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlzdEluZGV4KTsKKyAgICAgICAgICAg
IGlmIChhY2Nlc3MudmlhUHJveHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlT
dGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKworICAgICAgICAg
ICAgaWYgKGFjY2Vzcy51c2VzUG9seVByb3RvKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIERl
bGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisKKyAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVjdHVyZSgpOworICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoYWNjZXNz
LnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgorICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6IHsKKyAgICAg
ICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCks
IGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6RGVsZXRlTWlzcyA/IHRydWUgOiBmYWxzZSwg
c3RydWN0dXJlLCBudWxscHRyLCBpbnZhbGlkT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAo
IXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ug
QWNjZXNzQ2FzZTo6RGVsZXRlOiB7CisgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50
bHkoc3RydWN0dXJlLCBhY2Nlc3MuaWRlbnRpZmllcigpLnVpZCgpLCBvZmZzZXQpOworICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0LCBvZmZzZXQgPT0gYWNjZXNzLm9mZnNldCgp
KTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHVi
SW5mbyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlh
bnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCB0cnVlLCBzdHJ1Y3R1cmUsIG5ld1N0cnVj
dHVyZSwgYWNjZXNzLm9mZnNldCgpKTsKKworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFw
cGVuZFZhcmlhbnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVC
eVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
RGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1Zl
cnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoKTsKK30KKworRGVsZXRl
QnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisgICAgSUNTdGF0dXNDb250ZXh0
U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQoreworICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOworICAg
IEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGJ5
dGVjb2RlSW5kZXgpOworCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBjb250
ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC0+Z2V0KGNvZGVP
cmlnaW4pOworCisgICAgICAgIGF1dG8gYmxlc3MgPSBbJl0gKGNvbnN0IERlbGV0ZUJ5U3RhdHVz
JiByZXN1bHQpIC0+IERlbGV0ZUJ5U3RhdHVzIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+
aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMg
YmFzZWxpbmVSZXN1bHQgPSBjb21wdXRlRm9yQmFzZWxpbmUoCisgICAgICAgICAgICAgICAgICAg
IGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKKyAg
ICAgICAgICAgICAgICBiYXNlbGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOworICAgICAgICAgICAg
ICAgIHJldHVybiBiYXNlbGluZVJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChkaWRFeGl0LmlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdC5zbG93VmVyc2lvbigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfTsKKworICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBEZWxl
dGVCeVN0YXR1cyByZXN1bHQ7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1p
emVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKHJlc3VsdC5pc1NldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBibGVzcyhyZXN1
bHQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXR1cy5kZWxldGVTdGF0dXMpCisgICAg
ICAgICAgICByZXR1cm4gYmxlc3MoKnN0YXR1cy5kZWxldGVTdGF0dXMpOworICAgIH0KKworICAg
IHJldHVybiBjb21wdXRlRm9yQmFzZWxpbmUoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5
dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworRGVs
ZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBp
ZiAob2JzZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoT2Jz
ZXJ2ZWRUYWtlc1Nsb3dQYXRoKTsKKyAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFr
ZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6Om1lcmdlKGNvbnN0IERlbGV0
ZUJ5U3RhdHVzJiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIubV9zdGF0ZSA9PSBOb0luZm9ybWF0
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1lcmdlU2xvdyA9IFsmXSAoKSB7Cisg
ICAgICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkgfHwgb3RoZXIub2JzZXJ2ZWRTbG93UGF0aCgp
KQorICAgICAgICAgICAgKnRoaXMgPSBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1Bh
dGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqdGhpcyA9IERlbGV0ZUJ5U3RhdHVzKExp
a2VseVRha2VzU2xvd1BhdGgpOworICAgIH07CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAg
ICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJl
dHVybjsKKworICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhlci5t
X3N0YXRlKQorICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworCisgICAgICAgIGZvciAo
YXV0byYgb3RoZXJWYXJpYW50IDogb3RoZXIubV92YXJpYW50cykgeworICAgICAgICAgICAgaWYg
KCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1l
cmdlU2xvdygpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGlrZWx5
VGFrZXNTbG93UGF0aDoKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAg
cmV0dXJuIG1lcmdlU2xvdygpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVT
ZXQmIHNldCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKGF1dG8mIHZh
cmlhbnQpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuICFzZXQuY29udGFpbnModmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAgIH0pOworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247Cit9CisKK3ZvaWQgRGVsZXRl
QnlTdGF0dXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZv
ciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJp
YW50LnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjpt
YXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKERlbGV0ZUJ5SWRW
YXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVh
cCh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOworICAgIHN3aXRjaCAobV9zdGF0ZSkg
eworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgb3V0LnByaW50KCJOb0luZm9ybWF0
aW9uIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBvdXQucHJp
bnQoIlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1Bh
dGg6CisgICAgICAgIG91dC5wcmludCgiTGlrZWx5VGFrZXNTbG93UGF0aCIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50
KCJPYnNlcnZlZFRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG91
dC5wcmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwgIikiKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJmMDAyZDQ2ZmU0Y2RjNjM4YTc1Y2ZlMjRjODIxMjBkNzYz
MjIxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJD
b2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUgIkRl
bGV0ZUJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgorI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFyeS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQWNjZXNzQ2FzZTsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIFN0cnVjdHVy
ZVN0dWJJbmZvOworCitjbGFzcyBEZWxldGVCeVN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3QgeworICAg
ICAgICAvLyBJdCdzIHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAgICAg
IE5vSW5mb3JtYXRpb24sCisgICAgICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBhY2Nl
c3MuCisgICAgICAgIFNpbXBsZSwKKyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0aGUg
c2xvdyBwYXRoLgorICAgICAgICBMaWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJdCBo
YXMgYmVlbiBzZWVuIHRvIHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRUYWtl
c1Nsb3dQYXRoLAorICAgIH07CisKKyAgICBEZWxldGVCeVN0YXR1cygpCisgICAgICAgIDogbV9z
dGF0ZShOb0luZm9ybWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBEZWxldGVC
eVN0YXR1cyhTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHN0YXRlICE9IFNpbXBsZSk7CisgICAgfQorCisgICAgc3RhdGljIERlbGV0
ZUJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01h
cCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENv
ZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9
CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9ybWF0
aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQor
ICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gT2Jz
ZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29uc3QgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50
LCAxPiYgdmFyaWFudHMoKSB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CisKKyAgICBEZWxldGVCeVN0
YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworCisgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRo
ZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1h
eSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsK
KworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpIHsgcmV0dXJuIHRy
dWU7IH0KKworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYp
OworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgRGVsZXRlQnlTdGF0dXMoU3R1YkluZm9TdW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5m
byYpOworICAgIHZvaWQgbWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmKTsKKworICAgIHN0YXRp
YyBEZWxldGVCeVN0YXR1cyBjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNTdGF0dXNN
YXAmLCBCeXRlY29kZUluZGV4LCBFeGl0RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBzdGF0
aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soCisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPERlbGV0
ZUJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOworICAgIFN0YXRlIG1fc3RhdGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3Rh
dHVzTWFwLmgKaW5kZXggZGJkNWE4ODIzMTI0MjJkNGU4YjJlZGQzYjc5ODIyYzc2N2E3YmJjOC4u
ZjAzMTkwMTE1YTNiOGU0MmI0ZWI4Yjg3NDAzYWYyZDg0ZTAzNzRlZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgQ29kZUJsb2NrOwogY2xhc3MgR2V0QnlTdGF0dXM7CiBjbGFzcyBJbkJ5SWRTdGF0dXM7CiBj
bGFzcyBQdXRCeUlkU3RhdHVzOworY2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBjbGFzcyBTdHJ1Y3R1
cmVTdHViSW5mbzsKIHN0cnVjdCBCeVZhbEluZm87CiAKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0
IElDU3RhdHVzIHsKICAgICBHZXRCeVN0YXR1cyogZ2V0U3RhdHVzIHsgbnVsbHB0ciB9OwogICAg
IEluQnlJZFN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07CiAgICAgUHV0QnlJZFN0YXR1cyog
cHV0U3RhdHVzIHsgbnVsbHB0ciB9OworICAgIERlbGV0ZUJ5U3RhdHVzKiBkZWxldGVTdGF0dXMg
eyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgSUNTdGF0dXMs
IENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IGM5NDg0
YjQ4NWFkZmU2ZGFiNGNjZjJiN2FhNjQ1YmY3ODg5ODA4MzIuLmQ2MTVhMTNkOWMzYzQ3NWE2MTZj
MmU1NDc3Mjk1NTQ2MTY5YzQ0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAgUmVjb3JkZWRT
dGF0dXNlcyYgUmVjb3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBv
dGhlcikKICAgICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKICAgICBwdXRzID0gV1RGTW92
ZShvdGhlci5wdXRzKTsKICAgICBpbnMgPSBXVEZNb3ZlKG90aGVyLmlucyk7CisgICAgZGVsZXRl
cyA9IFdURk1vdmUob3RoZXIuZGVsZXRlcyk7CiAgICAgc2hyaW5rVG9GaXQoKTsKICAgICByZXR1
cm4gKnRoaXM7CiB9CkBAIC03NSwxMCArNzYsMjAgQEAgSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0
YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY28K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitEZWxldGVCeVN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3Qg
RGVsZXRlQnlTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlx
dWU8RGVsZXRlQnlTdGF0dXM+KHN0YXR1cyk7CisgICAgRGVsZXRlQnlTdGF0dXMqIHJlc3VsdCA9
IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBkZWxldGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2Rl
T3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2
b2lkIFJlY29yZGVkU3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiBzbG90Vmlz
aXRvcikKIHsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQogICAgICAgICBwYWlyLnNlY29u
ZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IGRl
bGV0ZXMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7
CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNs
b3RWaXNpdG9yKQpAQCAtODksNiArMTAwLDggQEAgdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjptYXJr
SWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCiAgICAgICAgIHBhaXIuc2Vjb25kLT5t
YXJrSWZDaGVhcChzbG90VmlzaXRvcik7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogaW5zKQogICAg
ICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0
byYgcGFpciA6IGRlbGV0ZXMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6ZmluYWxpemVXaXRob3V0RGVs
ZXRpbmcoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1JlY29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNv
cmRlZFN0YXR1c2VzLmgKaW5kZXggYjM1NWU5YjYyMzM4NDYyOTI2NDgyYzdjMWI5MWY0MjFmZmU2
MjBkMC4uOWU3MDU1ZDI0M2YyNGFhNmFmNWFhMDkyYWQzMDJlZjE1YThkMDU3NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIKICNpbmNsdWRlICJHZXRCeVN0YXR1cy5oIgog
I2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKQEAg
LTQ3LDYgKzQ4LDcgQEAgc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewogICAgIEdldEJ5U3RhdHVz
KiBhZGRHZXRCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlTdGF0dXMmKTsK
ICAgICBQdXRCeUlkU3RhdHVzKiBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBj
b25zdCBQdXRCeUlkU3RhdHVzJik7CiAgICAgSW5CeUlkU3RhdHVzKiBhZGRJbkJ5SWRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEluQnlJZFN0YXR1cyYpOworICAgIERlbGV0ZUJ5U3Rh
dHVzKiBhZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgRGVsZXRlQnlT
dGF0dXMmKTsKICAgICAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CiAg
ICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwpAQCAtNjMsMTIgKzY1LDE0IEBAIHN0
cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICAgICAgZnVuYyhnZXRzKTsKICAgICAgICAgZnVu
YyhwdXRzKTsKICAgICAgICAgZnVuYyhpbnMpOworICAgICAgICBmdW5jKGRlbGV0ZXMpOwogICAg
IH0KICAgICAKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0
cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmln
aW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeVN0YXR1cz4+PiBnZXRzOwogICAgIFZlY3RvcjxzdGQ6
OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFB1dEJ5SWRTdGF0dXM+Pj4gcHV0czsK
ICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxJbkJ5SWRT
dGF0dXM+Pj4gaW5zOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNjc5NWE0MmQ5NDYzOTRjYmRlNTMw
OTY4OGNkYzQ2Li5lYTIyMDRjMGM0MDJmYzhjY2M0OGM0OWY0NDIyNGY3Y2VhM2U0OTNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC00MTA2LDYgKzQxMDYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVy
TGltaQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBicmVhazsK
IApAQCAtNDI4Nyw2ICs0Mjg4LDEzIEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5kZWxldGVCeVN0
YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXgg
NTNiMDE0ODNlZDQxNDkwODQ4NzUxZGRiMzM2OWQyMTZiY2I1ZDVjOC4uYmU2NzEyMWNlMzEzODVk
ZmQ5NWU3ZGI0MTg5YmQ4Y2NmNzg5ODgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC00MDcs
NiArNDA3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRT
dGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CkBAIC0xMjY2LDcgKzEyNjcsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNh
c2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCkp
KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnJlbW92ZShtX2dyYXBoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgxYmM5
ZDJmMWIxZC4uMDZmMzQxZmJhMWM3NjlmYzNhOGIwY2M5NWI0ZTY0OTE3YTk3YjhmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ3
LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJERkdDbG9iYmVyc0V4aXRTdGF0ZS5oIgogI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5
U3RhdHVzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJHZXRC
eVN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgpAQCAtMjQ4LDYgKzI0OSw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1
cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplKTsKKwor
ICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3Rp
bmF0aW9uLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0
YXR1cyk7CiAgICAgCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBlbWl0
IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAgIC8v
IGNvbmRpdGlvbiBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJsZSBj
aGVjayBjYW4gYmUgZW1pdHRlZC4KQEAgLTQ2MTMsNiArNDYxNyw3MSBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBnZXR0ZXIsIG51bWJlck9mUGFyYW1ldGVy
cyAtIDEsIHJlZ2lzdGVyT2Zmc2V0LCAqdmFyaWFudC5jYWxsTGlua1N0YXR1cygpLCBwcmVkaWN0
aW9uKTsKIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsCisgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMpCit7CisgICAgaWYg
KCFkZWxldGVCeVN0YXR1cy5pc1NpbXBsZSgpIHx8IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCku
c2l6ZSgpICE9IDEgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAg
c2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEFTU0VSVChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKKyAgICBE
ZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsK
KworICAgIGlmICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICBhZGRUb0dyYXBo
KEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0
dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3Rh
dHVzKSksIGJhc2UpOworICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsK
KyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJl
c3VsdCgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBtdXN0Q2hlY2tD
ZWxsID0gZmFsc2U7CisgICAgYm9vbCBkZXN0cm95c0J1dHRlcmZseSA9IHZhcmlhbnQuZGVzdHJv
eXNCdXR0ZXJmbHkobXVzdENoZWNrQ2VsbCk7CisKKyAgICBpZiAobXVzdENoZWNrQ2VsbCkgewor
ICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5
SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJyZW50Q29k
ZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1cykpLCBiYXNlKTsKKyAgICBhZGRUb0dyYXBoKENoZWNr
U3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1
Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgQVNTRVJUKHZh
cmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KHZhcmlhbnQu
b2Zmc2V0KCkpKTsKKworICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKKyAgICBUcmFuc2l0aW9u
KiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisKKyAgICBpZiAoZGVzdHJv
eXNCdXR0ZXJmbHkpIHsKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChKU0Nv
bnN0YW50LCBPcEluZm8obV9jb25zdGFudE51bGwpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOdWtl
U3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5LCBiYXNlLCBwcm9wZXJ0eVN0b3JhZ2UpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAg
ICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKTsKKwor
ICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNz
RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+b2Zmc2V0ID0gdmFyaWFudC5vZmZzZXQoKTsKKyAg
ICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisKKyAgICAg
ICAgYWRkVG9HcmFwaCgKKyAgICAgICAgICAgIFB1dEJ5T2Zmc2V0LAorICAgICAgICAgICAgT3BJ
bmZvKGRhdGEpLAorICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAgICAgICAgICAgYmFz
ZSwKKyAgICAgICAgICAgIGpzQ29uc3RhbnQoSlNWYWx1ZSgpKSk7CisgICAgfQorCisgICAgYWRk
VG9HcmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgc2V0
KGRlc3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkpOwor
ICAgIHJldHVybjsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQoCiAgICAg
Tm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QpCiB7CkBAIC01OTQz
LDcgKzYwMTIsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0
YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKLSAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRl
bnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0
ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAg
ICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlk
KGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjIzMThmZTAzYWVk
NDFlMDMwOTU4N2U3ZGY5MDc2OWNiMDRlM2M0OS4uYmFiNzdhZjBkM2Q4NzE2OWY2NTA3NjExMTgz
YTViM2E0YzJiZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTQ3Myw2ICs0NzMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
RmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAg
ICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmlu
ZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhkMmJmMDZkZWIuLmYxNzQ1ZWNhYTAx
NWE5NmRlYmYwZGMxYTliYWE5MjgxMjFkMzk2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04Niw2ICs4Niw3IEBAIGJv
b2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
RmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAg
ICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9i
c2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFw
cyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBi
dXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNTVkM2M4ZmQ1ZGNmOGZhMmVmYmEzN2Y5NmRjOTA5
OWQ0OTcyNTE4MS4uMDhlOGE0NGRkMTMxODFmNjQ4OGY3ZmZmM2Q2ZTdlNjU5MGJhNTkwNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjQ1LDYgKzI0NSw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdl
dEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2Ug
RGF0ZUdldEludDMyT3JOYU46CiAgICAgY2FzZSBEYXRlR2V0VGltZToKICAgICBjYXNlIERhdGFW
aWV3R2V0SW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
aW5kZXggZTk3ZGUxMGY2ZjRjZGMxNWJhZWZiMTBiN2VjNjA2MjgyNzgzNTk1NS4uMjM4ZWFmMTk4
MGVlNjkwNzgzMGM5ZDI5NzBlYTYxYzczZDk0YTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNTgwLDYgKzI1ODAsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50Ogog
ICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggYjkyODgxMGUx
MDE1NTNiMTlhZjUxMzQ0MmMwM2ViZWVjMDQ4MGYyYi4uMWNjYThiMmFjNDFjYmU3ZjQ5NmQzYzk2
YTdiOGRkMTAwMDJkNTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCkBAIC0xMDksNiArMTA5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEz
NDU1YjVjMjlmMDcwZmVmMmY5OTE5NTJiY2ZmMDA3ZmVhOTE3MjYuLjNmN2FlOTg5NzNjOWUxYTYy
ZWNkMWE3MmY5MjU3ZDczMTAyODUxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CkBAIC0yOTc2LDYgKzI5NzYsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcEluZm8u
YXM8UHV0QnlJZFN0YXR1cyo+KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNEZWxldGVCeVN0YXR1
cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJEZWxldGVCeVN0YXR1czsK
KyAgICB9CisKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlQnlTdGF0dXMoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGhhc0RlbGV0ZUJ5U3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8RGVsZXRlQnlTdGF0dXMqPigpOworICAgIH0KKwogICAgIHZvaWQgZHVtcENoaWxkcmVu
KFByaW50U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkMSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGUyMTFlYTc3ZDg1NDE5OWJiODQ2
M2ZhZWMzN2JmNWM0MWM1Zjk3ZTcuLmRmYmY1ZGIzODBiZjU2YzkyYjc2NWUxMDFlMTc5ODdmMDU4
MzE2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTUyNiw2
ICs1MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmls
dGVyR2V0QnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5
SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3Rh
dHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyRGVsZXRlQnlTdGF0dXMs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwKICAgICBt
YWNybyhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgLyog
VGhlIGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBiZWNhdXNlIHRoZXkgZG8gYm91bmRz
IGNoZWNrcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDA1
YWNkZjIzODc2OTczZjg4ZTgyYjlhNzNiMzQ5ZWU3NzliNWI5ODQuLmQwMGVhNjFlYTI5NWQxNjcw
M2Y1NjY1NjhmYWU5OTcxNjUxYTExOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAt
MTIyMCw2ICsxMjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNTcwLDYgKzI1NzEsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9t
QWxsb2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91
dENoZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uOGVlOTA5
YjM2MDFjMDcwMjY1MTE5NDRjYmFmYTY2OGViMjM3YjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTEzOTUsNiArMTM5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0
QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6
CiAgICAgICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBEYXRhVmlld1Nl
dDoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRlNjAx
YTBjN2ZjOTY2NGI1NWVhYy4uOGFjNzFmYmE4ZTg0NzAwYzk3M2QxMmI3ODQxZDM0ZTdkMjRlOWY1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAg
LTM2MSw2ICszNjEsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0
YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAg
IC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhhbiB3
aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCiAgICAgICAgIC8vIHRvIGNhcHR1
cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1c2Vy
IHB1dCB0aGVtLgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBiMDE5ZDg1ZGY5
YzI1YjEzMDg5OTJhZTY0N2I1ZWM4YTI3NTNiYzY2Li5mYzJlOTNiMWQ4OGZiYzYzNTFiNjIzZDcz
NjlmODdlZDlkY2Q3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQxOTAsNiArNDE5MCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJ
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBtX2ludGVy
cHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCBiMDdjYjI1NzVkMTA2Mjc3OGQ0ZWIwNzRkZmM1ZmE2MTY2M2Rk
OTYwLi42YThmNTEyYTk2NjRlNjMyNTFmNzFmODFhYzQwOTU2NzI1ZDVmNzU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTUy
NTUsNiArNTI1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUpOwogICAg
ICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCA3
NGVhNjE4ZTkwMTEyOWE1N2UyYzgzYmI4OTJhNzViN2I4MDYzM2I3Li4wYzM1YTUzNjVjYzQ2ZWYz
Yzc4OTk0OGY0ZDJlNjBjY2YwMTc2Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OCw2ICsxOTgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDog
ewpAQCAtMzk5LDYgKzQwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS5ub2Rl
KCkgPT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFw
aCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4YzFjNjEwNTk5ZmQzMDI5OTczNDM2
MGNiMjI3YWNiMi4uNTA3YTk5MjZjYTAzODEyZmU5OTljMWQ2MGFmZmU0YzU2OWFlOTVkYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzky
LDYgKzM5Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2Rl
KQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToK
ICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4MDM2MzkwN2I5ZTE3MjgzMjc1YjI3YTY5NTMzMThk
YzRlNjdiNTliLi5hNGViMzYwOTVlNDhhNTk3ZWI2NmFmNzFlZGQ0ZWE3NzMyNzkwMGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNTY5
LDYgKzE1NjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgog
ICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5C
eUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAg
ICAgY29tcGlsZUZpbHRlcklDU3RhdHVzKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBEYXRlR2V0SW50MzJPck5hTjoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGUzMTQ5ZGUzZjBlNWNlZTA4ZmEyODhiMGRkODllODU3
YjBmZDE2Yi4uMWIyOTQyMTAyNGIzMjA1ZjBmYWI2Y2Y4NjJjYjBlYzI1ZTEzZjBhNCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAyMC0wMy0wNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhlIERG
RworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjY0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qczogQWRkZWQu
CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0LmJsYWNrYm94KToK
KyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LmRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5l
LmRvQWxsb2MxKToKKyAgICAgICAgKiBzdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUu
anM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5i
bGFja2JveCk6CisgICAgICAgIChub0lubGluZS5ibGFja2JveC50ZXN0U2luZ2xlU3RydWN0dXJl
LmRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LnRlc3RTaW5nbGVTdHJ1Y3R1
cmUpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZS50ZXN0SW5saW5lU2lu
Z2xlU3RydWN0dXJlLmRvRGVsZXRlMik6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3Ry
dWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUuZG9BbGxvYzIpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUudGVzdEV4aXQuZG9EZWxl
dGUzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUudGVzdEV4
aXQpOgorCiAyMDIwLTAzLTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIYW5kbGUgYW4gb3V0IG9mIG1lbW9yeSBlcnJvciB3aGlsZSBjb25zdHJ1Y3RpbmcgdGhl
IEJ5dGVjb2RlR2VuZXJhdG9yLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
ZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTkwZWI2ZTU1MWRjOGU0MWRhYTg0ZDhhODliMjJlMjM1NzhmMjhlOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNp
bmtpbmcuanMKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgewor
ICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBm
YWlsZWQiKQorfQorbm9JbmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7Cisg
ICAgcmV0dXJuIHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiBkb0FsbG9jMSgp
IHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmoueSA9IDcKKyAgICBv
YmoueSA9IGJsYWNrYm94KG9iai55KQorICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgcmV0
dXJuIG9iai55Cit9Citub0lubGluZShkb0FsbG9jMSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDAwMDsgKytpKSB7CisgICAgZG9BbGxvYzEoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxl
dGUtcHJvcGVydHktZGZnLWlubGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2JhYmZkNDA3MWVkNDU0MTg0
ZTYyZjJlYzAzMzQxYzFhYzUzYjNlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
ZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanMKQEAgLTAsMCArMSw4NyBAQAorZnVuY3Rpb24g
YXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorbm9JbmxpbmUoYXNzZXJ0KQorCitmdW5j
dGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0dXJuIHgKK30KK25vSW5saW5lKGJsYWNrYm94KQor
CitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2Mx
KCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSA1CisgICAgICAgIG9i
ai55ID0gNworICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBhc3NlcnQo
ZGVsZXRlIG9iai54KQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUo
ZG9BbGxvYzEpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAg
ICAgICBkb0FsbG9jMSgpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZSkK
KworZnVuY3Rpb24gdGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSgpIHsKKyAgICBmdW5jdGlvbiBk
b0RlbGV0ZTIobykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG8ueCkKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBkb0FsbG9jMigpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54
ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkK
KyAgICAgICAgZG9EZWxldGUyKG9iaikKKyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAg
IG5vSW5saW5lKGRvQWxsb2MyKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7
CisgICAgICAgIGRvRGVsZXRlMih7IGksIGY6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwg
ZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRl
Mih7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYjogNCB9KQorICAgICAgICBk
b0RlbGV0ZTIoeyBpLCBhOiA0IH0pCisgICAgICAgIGRvQWxsb2MyKCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jMigpCisg
ICAgfQorfQorbm9JbmxpbmUodGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSkKKworZnVuY3Rpb24g
dGVzdEV4aXQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUzKG9iaikgeworICAgICAgICBhc3Nl
cnQoZGVsZXRlIG9iai55KQorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTMpCisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGks
IGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAg
ICAgICAgZG9EZWxldGUzKHsgaSwgZjogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBlOiA0
IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGQ6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsg
aSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBiOiA0IH0pCisgICAgICAgIGRvRGVs
ZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9J
bmxpbmUodGVzdEV4aXQpCisKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdElubGluZVNpbmds
ZVN0cnVjdHVyZSgpCit0ZXN0RXhpdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392768</attachid>
            <date>2020-03-06 13:47:36 -0800</date>
            <delta_ts>2020-03-09 09:32:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200306134735.patch</filename>
            <type>text/plain</type>
            <size>59612</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjNhNTU1Yzc5Mjc4OWM1NjZkODM2NmE1ZTI4ZTA2ODc2OWFhZDQzLi45MmJkZjE2Njg1MjNkMWQ2
NThiZDkwM2U3Yzg0MGM0MDViNjY3NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMC0wMy0wNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhl
IERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biB3ZSBzZWUgdGhhdCB0aGUgZGVsZXRlQnlJZCBpbmxpbmUgY2FjaGUgb25seSBzYXcgb25lIHN0
cnVjdHVyZSwgd2UgaW5saW5lIGl0IGludG8gdGhlIERGRy4gVGhpcyBpbnZvbHZlcworICAgICAg
ICBjcmVhdGluZyBhIG5ldyBub2RlLCBGaWx0ZXJEZWxldGVCeVN0YXR1cywgYW5kIHRoZW4gdHVy
bmluZyB0aGVzZSBEZWxldGVCeUlkIG5vZGVzIGludG8gYSBGaWx0ZXJEZWxldGVCeVN0YXR1cywK
KyAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsIFB1dEJ5T2Zmc2V0LCB0aGVuIFB1dFN0cnVjdHVyZS4g
VGhlIGxvZ2ljIGZvciBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgCisgICAgICAgIFB1dEJ5SWQsIGdpdmluZyBpbmxpbmVkIGZ1bmN0aW9ucyB0aGUgb3Bw
b3J0dW5pdHkgdG8gdXNlIG9ubHkgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcKKyAgICAgICAgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRp
b24uCisKKyAgICAgICAgVGhlIGJlbmNobWFyayBzaG93cyBhIDJ4IGltcHJvdmVtZW50IG9uIHBv
bHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eSwgYW5kIGEgNTAlIGltcHJvdmVtZW50IG9uIGRlbGV0
ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAqIGJ5
dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0
ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlk
VmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmF0
dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OnZpc2l0QWdn
cmVnYXRlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXAgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0
ZUJ5SWRWYXJpYW50OjpvbGRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFy
aWFudDo6bmV3U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OnJl
c3VsdCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpvZmZzZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6ZGVzdHJveXNCdXR0ZXJmbHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6aXNQcm9wZXJ0eVVuc2V0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b3ZlcmxhcHMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRl
bGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0
dXM6OmNvbXB1dGVGb3JCYXNlbGluZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpE
ZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OnNsb3dW
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6Om1lcmdlKToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRlbGV0
ZUJ5U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVz
OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9JQ1N0YXR1c01hcC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAg
ICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpT
Qzo6UmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuaDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFj
aFZlY3Rvcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVE
ZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9l
c0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdG
aXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUp
OgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5o
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0RlbGV0ZUJ5U3RhdHVzKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpkZWxldGVCeVN0YXR1cyk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9F
eGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisKIDIwMjAtMDMt
MDUgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ09ubHld
IDMyLWJpdHMgd2FybmluZyBvbiBtZW1zZXQgb2YgSlNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGY3YzY2NjJmN2ZlNTY3MDlmNDUwOTRjMDczZjU1YzUwODFjYTg4
N2UuLjM2ODQ4YzI1NjM0ZmI3YTY0NjBhNmQ2MjQ5MjhkMjRkMDIxYzcyOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUwMiw2ICs1MDIsOCBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL0NvZGVUeXBlLmgK
ICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
CisgICAgYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmgKICAgICBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiNzQ1NjUxN2Y4Zjc0YzY5ZjFj
OWQ1YmRjMjAyYzRmNmU0NDE4NWQuLjVkYmUzNzQ3NjU2ZGQ1M2U1MWY3NjMwMzMwNjA0YzBhOTll
Nzc5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDcgKzExNzgsOSBA
QAogCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNB
NjAxMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFG
REJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTcz
OSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8q
IERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQu
aCAqLzsgfTsKIAkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xv
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzM0QjY1
NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTczQUQwNjI5MjNGRjY2MjYwMEY1
MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggKi87IH07CiAJCTczRTM3OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJl
bmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNF
Mzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJ
CTc1OTNDODk4QkU3MTRBNjRCRTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBB
QzlFMzY0RCAvKiBXYXNtQ29udGV4dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2Fz
bU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzkwMDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzk3Miw3ICszOTc0LDExIEBACiAJ
CTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NCMUQwRDMxOEIwMDVFNjBC
RSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVCeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MzE5MEQ5NjI0MDA5MzQ5MDBGODkxQzkgLyogRGVsZXRlQnlT
dGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVsZXRlQnlTdGF0dXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRl
UHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZVBy
b3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3M0FEMDYyODIzRkY2
NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlT
dGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAw
OTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BT
dHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkx
MDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNS
ZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0Iy
NUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTgyMzksNiArODI0NSwxMCBAQAogCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlGRTUwNjg2NjFBRTI1
RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLywKIAkJCQlGRTUwNjg2NDFB
RTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggKi8sCisJCQkJNzMxMUZBMzMy
NDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmNwcCAqLywKKwkJCQk3MzExRkEz
MTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCAqLywKKwkJCQk3MzE5MEQ5
NjI0MDA5MzQ5MDBGODkxQzkgLyogRGVsZXRlQnlTdGF0dXMuY3BwICovLAorCQkJCTczQUQwNjI4
MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oICovLAogCQkJCTBGQkMwQUU0MTQ5
NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCQzBBRTUxNDk2
QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi8sCiAJCQkJMEYyRUJCQUExREVERjk0
RTAwOTkwMzY5IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwICovLApAQCAtOTIxMiw2ICs5MjIy
LDggQEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1w
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCQjFERUY4NjQ1
MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzMx
MUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk3M0FEMDYyOTIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0
eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBE
ZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4
REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDc2ZjFjNjk0ODVjNmZjYmVlNDg3ZTVhYzk4NmNhNDYzNjM1M2FlYmUu
LjVlNmExNzQ1N2FiZmM3MjA0NmJiMWI5ZjlmODFjZWRkNGJiMTc2MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTIxOCw2ICsyMTgsOCBAQCBieXRlY29kZS9ERkdFeGl0UHJvZmls
ZS5jcHAKIGJ5dGVjb2RlL0RhdGFGb3JtYXQuY3BwCiBieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suY3BwCiBieXRlY29kZS9EZWZlcnJlZFNvdXJjZUR1bXAuY3BwCitieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5jcHAKK2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcAogYnl0
ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2suY3Bw
CiBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA5MWVlZmEwMDk4ZTYzNWE3MWU2
YjcyMWZiZThjMGExZjI5ZTE5ZTk2Li45YWFmNjdlNjlmMGZkMGRkMDQ5Y2Y5NDNkMjcwYzEwNWRi
NjExODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMTQ5OSw2ICsxNDk5LDggQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
cHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmluU3RhdHVz
ID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdD
b21tb24tPnJlY29yZGVkU3RhdHVzZXMuZGVsZXRlcykKKyAgICAgICAgICAgICAgICByZXN1bHQu
YWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5kZWxldGVTdGF0dXMg
PSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWJiZTEzMDU4ZWExNjdiMDU5MWZhNDZiMTYxNjg5OGQ4NjM4ZDZmMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFy
aWFudC5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJ
ZFZhcmlhbnQuaCIKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZXN1bHQsCisgICAgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQpCisgICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1
Y3R1cmUpCisgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCisgICAgLCBtX29mZnNl
dChvZmZzZXQpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3sKKyAg
ICBBU1NFUlQob2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNl
dCkKKyAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUpOworICAgIGVsc2UKKyAgICAgICAgQVNT
RVJUKG5ld1N0cnVjdHVyZSk7Cit9CisKK0RlbGV0ZUJ5SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZh
cmlhbnQoKSB7IH0KKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KGNvbnN0
IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitE
ZWxldGVCeUlkVmFyaWFudCYgRGVsZXRlQnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBEZWxl
dGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgbV9pZGVudGlmaWVyID0gb3RoZXIubV9pZGVu
dGlmaWVyOworICAgIG1fcmVzdWx0ID0gb3RoZXIubV9yZXN1bHQ7CisgICAgbV9vbGRTdHJ1Y3R1
cmUgPSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAgICBtX25ld1N0cnVjdHVyZSA9IG90aGVyLm1f
bmV3U3RydWN0dXJlOworICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CisgICAgcmV0dXJu
ICp0aGlzOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25z
dCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9
ICEhb3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
bV9yZXN1bHQgIT0gb3RoZXIubV9yZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChtX2lkZW50aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9v
ZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29sZFN0cnVjdHVyZSAh
PSBvdGhlci5tX29sZFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VS
VChtX25ld1N0cnVjdHVyZSA9PSBvdGhlci5tX25ld1N0cnVjdHVyZSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0
b3IpOworfQorCit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIG1fb2xkU3Ry
dWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisg
ICAgICAgIG1fbmV3U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKwordm9pZCBE
ZWxldGVCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1
bXBJbkNvbnRleHQob3V0LCAwKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6ZHVtcElu
Q29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCopIGNvbnN0Cit7CisgICAgb3V0
LnByaW50KCI8Iik7CisgICAgb3V0LnByaW50KCJpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgcmVz
dWx0PSIsIG1fcmVzdWx0KTsKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5w
cmludCgiLCAiLCAqbV9vbGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAg
ICAgICAgb3V0LnByaW50KCIgLT4gIiwgKm1fbmV3U3RydWN0dXJlKTsKKyAgICBvdXQucHJpbnQo
Iiwgb2Zmc2V0ID0gIiwgb2Zmc2V0KCkpOworICAgIG91dC5wcmludCgiPiIpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVsZXRlQnlJZFZhcmlhbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzRmOWY5OThkZDc3ZDYzYjJmOTA3ZDVj
OTRmNDdlNDQ4NDdkMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CisjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKKyNpbmNsdWRlICJQcm9w
ZXJ0eU9mZnNldC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgorI2luY2x1ZGUgPHd0Zi9C
b3guaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxMaW5rU3RhdHVzOworY2xhc3Mg
RGVsZXRlQnlTdGF0dXM7CitzdHJ1Y3QgRHVtcENvbnRleHQ7CisKK2NsYXNzIERlbGV0ZUJ5SWRW
YXJpYW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEZWxl
dGVCeUlkVmFyaWFudCgKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCByZXN1bHQs
CisgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN1dHJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSwgUHJvcGVydHlPZmZzZXQpOworCisgICAgfkRlbGV0ZUJ5SWRWYXJpYW50KCk7CisKKyAgICBE
ZWxldGVCeUlkVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworICAgIERlbGV0ZUJ5
SWRWYXJpYW50JiBvcGVyYXRvcj0oY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKworICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0KKyAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbmV3U3RydWN0dXJlOyB9CisgICAg
Ym9vbCByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQorCisgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKworICAgIGJvb2wgZGVz
dHJveXNCdXR0ZXJmbHkoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29uc3QgeyByZXR1cm4gIW1fbmV3
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIG1fb2xkU3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpICYmICFtX25ld1N0cnVjdHVyZS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG11
c3RDaGVja0NlbGwpOyB9CisKKyAgICBib29sIGlzUHJvcGVydHlVbnNldCgpIGNvbnN0IHsgcmV0
dXJuIG9mZnNldCgpID09IGludmFsaWRPZmZzZXQ7IH0KKworICAgIGJvb2wgYXR0ZW1wdFRvTWVy
Z2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dy
ZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OworCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisK
KyAgICBib29sIG92ZXJsYXBzKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKKyAgICB7
CisgICAgICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobV9pZGVudGlmaWVyKSB7CisgICAg
ICAgICAgICBpZiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2xkU3Ry
dWN0dXJlID09IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgRGVsZXRlQnlTdGF0dXM7CisKKyAgICBib29sIG1fcmVzdWx0OworICAgIFN0
cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsK
KyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBhY2Q2
NzFhZTVjYmVkZDgxNzAwNzg0NjdlZWE2ZGNjMWMzZjRmNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKQEAgLTAsMCAr
MSwyODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIKKworI2luY2x1
ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxp
bmVzLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNVdGlscy5o
IgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU1Njb3BlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBK
U0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBHZXR0ZXJTZXR0ZXI7Cit9CisKK2Jvb2wg
RGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZh
cmlhbnQpCit7CisgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2
YXJpYW50KTsKK30KKworRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JC
YXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKK3sKKyAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CisKKyAgICBEZWxldGVC
eVN0YXR1cyByZXN1bHQ7CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICByZXN1bHQgPSBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgbG9ja2VyLCBi
YXNlbGluZUJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZv
KTsKKworICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9u
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9QQVJBTShkaWRF
eGl0KTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjZW5kaWYKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorRGVsZXRlQnlTdGF0dXM6OkRlbGV0
ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit7CisgICAgc3dpdGNoIChzdW1tYXJ5KSB7CisgICAgY2FzZSBTdHViSW5mb1N1bW1h
cnk6Ok5vSW5mb3JtYXRpb246CisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlNpbXBsZToKKyAgICBjYXNl
IFN0dWJJbmZvU3VtbWFyeTo6TWFrZXNDYWxsczoKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6
VGFrZXNTbG93UGF0aEFuZE1ha2VzQ2FsbHM6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6VGFr
ZXNTbG93UGF0aDoKKyAgICAgICAgbV9zdGF0ZSA9IHN0dWJJbmZvLnRvb2tTbG93UGF0aCA/IE9i
c2VydmVkVGFrZXNTbG93UGF0aCA6IExpa2VseVRha2VzU2xvd1BhdGg7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworRGVsZXRl
QnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBTdHViSW5mb1N1bW1hcnkg
c3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJsb2NrLT52bSgpLCBzdHViSW5m
byk7CisgICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAgICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cyhzdW1tYXJ5LCAqc3R1YkluZm8pOworCisgICAgRGVsZXRlQnlTdGF0dXMgcmVz
dWx0OworICAgIHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlOworICAgIHN3aXRjaCAoc3R1YkluZm8t
PmNhY2hlVHlwZSgpKSB7CisgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoTm9JbmZvcm1hdGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6
U3R1YjogeworICAgICAgICBQb2x5bW9ycGhpY0FjY2VzcyogbGlzdCA9IHN0dWJJbmZvLT51LnN0
dWI7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBs
aXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7CisgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNl
JiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5kZXgpOworICAgICAgICAgICAgaWYgKGFjY2Vzcy52
aWFQcm94eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNs
b3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworCisgICAgICAgICAgICBpZiAoYWNjZXNz
LnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMo
SlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKworICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7CisgICAgICAgICAgICBBU1NF
UlQoc3RydWN0dXJlKTsKKworICAgICAgICAgICAgc3dpdGNoIChhY2Nlc3MudHlwZSgpKSB7Cisg
ICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6CisgICAgICAgICAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAgICAgICAgICAgIERl
bGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgYWNjZXNzLnR5cGUo
KSA9PSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzID8gdHJ1ZSA6IGZhbHNlLCBzdHJ1Y3R1cmUsIG51
bGxwdHIsIGludmFsaWRPZmZzZXQpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVu
ZFZhcmlhbnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0
YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpE
ZWxldGU6IHsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3Bl
cnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUs
IGFjY2Vzcy5pZGVudGlmaWVyKCkudWlkKCksIG9mZnNldCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChvZmZzZXQsIG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0KCkpOworICAgICAgICAg
ICAgICAgIGlmICghbmV3U3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVs
ZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFj
Y2Vzcy5pZGVudGlmaWVyKCksIHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBhY2Nlc3Mu
b2Zmc2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2
YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6
c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1
cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5
KSwgKnN0dWJJbmZvKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxl
dGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElD
U3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4
dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRl
Y29kZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlk
RXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7
CisKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgewor
ICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAg
ICAgICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJlc3VsdCkgLT4g
RGVsZXRlQnlTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29k
ZU9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNlbGluZVJlc3Vs
dCA9IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9j
aywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAgICAgICAgICAg
IGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJh
c2VsaW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNT
ZXQoRXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dW
ZXJzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworCisgICAg
ICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIHJl
c3VsdDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygK
KyAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ss
IHN0YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0
LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoc3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAgICAgIHJldHVy
biBibGVzcygqc3RhdHVzLmRlbGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1
dGVGb3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwg
ZGlkRXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVCeVN0YXR1cyBE
ZWxldGVCeVN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNs
b3dQYXRoKCkpCisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xv
d1BhdGgpOworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsK
K30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90
aGVyKQoreworICAgIGlmIChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9i
c2VydmVkU2xvd1BhdGgoKSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAg
ICAqdGhpcyA9IERlbGV0ZUJ5U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93
UGF0aCk7CisgICAgfTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZv
cm1hdGlvbjoKKyAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBTaW1wbGU6CisgICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAg
ICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZh
cmlhbnQgOiBvdGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlh
bnQob3RoZXJWYXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRo
OgorICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VT
bG93KCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
dm9pZCBEZWxldGVCeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQorewor
ICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmFyaWFu
dHMucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFudCkgLT4gYm9v
bCB7CisgICAgICAgICAgICByZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAg
ICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6dmlz
aXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChEZWxldGVCeUlk
VmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQudmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6Om1hcmtJZkNoZWFwKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwor
fQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgb3V0LnByaW50KCIoIik7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBO
b0luZm9ybWF0aW9uOgorICAgICAgICBvdXQucHJpbnQoIk5vSW5mb3JtYXRpb24iKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTaW1wbGU6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICAgICAg
b3V0LnByaW50KCJMaWtlbHlUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIk9ic2VydmVkVGFr
ZXNTbG93UGF0aCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgb3V0LnByaW50KCIsICIs
IGxpc3REdW1wKG1fdmFyaWFudHMpLCAiKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYmYwMDJkNDZmZTRjZGM2MzhhNzVjZmUyNGM4MjEyMGQ3NjMyMjE5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVz
LmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIK
KyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlh
bnQuaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisj
aW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBB
Y2Nlc3NDYXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisK
K2NsYXNzIERlbGV0ZUJ5U3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3Mg
dW5jYWNoZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlv
biwKKyAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAg
U2ltcGxlLAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisg
ICAgICAgIExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4g
dG8gdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisg
ICAgfTsKKworICAgIERlbGV0ZUJ5U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3Jt
YXRpb24pCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0YXRl
IHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQo
c3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29t
cHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1h
cCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisK
KyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wg
aXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNl
cnZlZFNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xv
d1BhdGg7IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBT
aW1wbGU7IH0KKyAgICBjb25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50
cygpIHsgcmV0dXJuIG1fdmFyaWFudHM7IH0KKworICAgIERlbGV0ZUJ5U3RhdHVzIHNsb3dWZXJz
aW9uKCkgY29uc3Q7CisKKyAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJp
YW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGlt
YXRlLgorICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2
aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJikgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
Ym9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEZWxl
dGVCeVN0YXR1cyhTdHViSW5mb1N1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgdm9p
ZCBtZXJnZShjb25zdCBEZWxldGVCeVN0YXR1cyYpOworCisgICAgc3RhdGljIERlbGV0ZUJ5U3Rh
dHVzIGNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2Rl
SW5kZXgsIEV4aXRGbGFnKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyBEZWxldGVCeVN0
YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAg
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHJ1
Y3R1cmVTdHViSW5mbyopOworI2VuZGlmCisKKyAgICBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQs
IDE+IG1fdmFyaWFudHM7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
TWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAppbmRl
eCBkYmQ1YTg4MjMxMjQyMmQ0ZThiMmVkZDNiNzk4MjJjNzY3YTdiYmM4Li5mMDMxOTAxMTVhM2I4
ZTQyYjRlYjhiODc0MDNhZjJkODRlMDM3NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSUNTdGF0dXNNYXAuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBDb2RlQmxvY2s7
CiBjbGFzcyBHZXRCeVN0YXR1czsKIGNsYXNzIEluQnlJZFN0YXR1czsKIGNsYXNzIFB1dEJ5SWRT
dGF0dXM7CitjbGFzcyBEZWxldGVCeVN0YXR1czsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwog
c3RydWN0IEJ5VmFsSW5mbzsKIApAQCAtNDgsNiArNDksNyBAQCBzdHJ1Y3QgSUNTdGF0dXMgewog
ICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAgSW5CeUlkU3RhdHVz
KiBpblN0YXR1cyB7IG51bGxwdHIgfTsKICAgICBQdXRCeUlkU3RhdHVzKiBwdXRTdGF0dXMgeyBu
dWxscHRyIH07CisgICAgRGVsZXRlQnlTdGF0dXMqIGRlbGV0ZVN0YXR1cyB7IG51bGxwdHIgfTsK
IH07CiAKIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBJQ1N0YXR1cywgQ29kZU9yaWdpbkFw
cHJveGltYXRlSGFzaD4gSUNTdGF0dXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggYzk0ODRiNDg1YWRmZTZkYWI0
Y2NmMmI3YWE2NDViZjc4ODk4MDgzMi4uZDYxNWExM2Q5YzNjNDc1YTYxNmMyZTU0NzcyOTU1NDYx
NjljNDQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNv
cmRlZFN0YXR1c2VzLmNwcApAQCAtMzQsNiArMzQsNyBAQCBSZWNvcmRlZFN0YXR1c2VzJiBSZWNv
cmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0oUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQogICAgIGdl
dHMgPSBXVEZNb3ZlKG90aGVyLmdldHMpOwogICAgIHB1dHMgPSBXVEZNb3ZlKG90aGVyLnB1dHMp
OwogICAgIGlucyA9IFdURk1vdmUob3RoZXIuaW5zKTsKKyAgICBkZWxldGVzID0gV1RGTW92ZShv
dGhlci5kZWxldGVzKTsKICAgICBzaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiAqdGhpczsKIH0K
QEAgLTc1LDEwICs3NiwyMCBAQCBJbkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZElu
QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjbwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK0RlbGV0ZUJ5U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGREZWxldGVC
eVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBEZWxldGVCeVN0YXR1
cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxEZWxldGVCeVN0
YXR1cz4oc3RhdHVzKTsKKyAgICBEZWxldGVCeVN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdl
dCgpOworICAgIGRlbGV0ZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1v
dmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVjb3JkZWRT
dGF0dXNlczo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogewogICAg
IGZvciAoYXV0byYgcGFpciA6IGdldHMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3Jl
Z2F0ZShzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogZGVsZXRlcykKKyAgICAg
ICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKIH0KIAogdm9pZCBS
ZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCkBA
IC04OSw2ICsxMDAsOCBAQCB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJiBzbG90VmlzaXRvcikKICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNs
b3RWaXNpdG9yKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbnMpCiAgICAgICAgIHBhaXIuc2Vj
b25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogZGVs
ZXRlcykKKyAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKIH0K
IAogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZyhWTSYgdm0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
aAppbmRleCBiMzU1ZTliNjIzMzg0NjI5MjY0ODJjN2MxYjkxZjQyMWZmZTYyMGQwLi45ZTcwNTVk
MjQzZjI0YWE2YWY1YWEwOTJhZDMwMmVmMTVhOGQwNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJE
ZWxldGVCeVN0YXR1cy5oIgogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5C
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgpAQCAtNDcsNiArNDgsNyBA
QCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgR2V0QnlTdGF0dXMqIGFkZEdldEJ5U3Rh
dHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBHZXRCeVN0YXR1cyYpOwogICAgIFB1dEJ5SWRT
dGF0dXMqIGFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFB1dEJ5SWRT
dGF0dXMmKTsKICAgICBJbkJ5SWRTdGF0dXMqIGFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiwgY29uc3QgSW5CeUlkU3RhdHVzJik7CisgICAgRGVsZXRlQnlTdGF0dXMqIGFkZERlbGV0
ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBEZWxldGVCeVN0YXR1cyYpOwogICAg
IAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJik7CkBAIC02MywxMiArNjUsMTQgQEAgc3RydWN0IFJlY29yZGVk
U3RhdHVzZXMgewogICAgICAgICBmdW5jKGdldHMpOwogICAgICAgICBmdW5jKHB1dHMpOwogICAg
ICAgICBmdW5jKGlucyk7CisgICAgICAgIGZ1bmMoZGVsZXRlcyk7CiAgICAgfQogICAgIAogICAg
IFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3Rh
dHVzPj4+IGNhbGxzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPEdldEJ5U3RhdHVzPj4+IGdldHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRzOwogICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEluQnlJZFN0YXR1cz4+PiBpbnM7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RGVsZXRl
QnlTdGF0dXM+Pj4gZGVsZXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IGU5NTgwMGFmZjI2Nzk1YTQyZDk0NjM5NGNiZGU1MzA5Njg4Y2RjNDYuLmVh
MjIwNGMwYzQwMmZjOGNjYzQ4YzQ5ZjQ0MjI0ZjdjZWEzZTQ5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTQxMDYsNiArNDEwNiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2Fz
ZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAg
Y2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6CiAgICAgICAgIGJyZWFrOwogCkBAIC00Mjg3LDYg
KzQyODgsMTMgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1
cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUtPmRlbGV0ZUJ5U3RhdHVzKCktPmZpbHRl
cih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA1M2IwMTQ4M2VkNDE0
OTA4NDg3NTFkZGIzMzY5ZDIxNmJjYjVkNWM4Li5iZTY3MTIxY2UzMTM4NWRmZDk1ZTdkYjQxODli
ZDhjY2Y3ODk4ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTQwNyw2ICs0MDcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAg
Y2FzZSBDaGVja0FycmF5T3JFbXB0eToKQEAgLTEyNjYsNyArMTI2Nyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxs
TGlua1N0YXR1czoKLSAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czogewor
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFp
c0VsaW1pbmF0ZWRBbGxvY2F0aW9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1f
Z3JhcGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCBkMWZhMGIzMTc4NzcyZWZmOWRmNDRiYzU4ZGVmODFiYzlkMmYxYjFkLi4wNmYz
NDFmYmExYzc2OWZjM2E4YjBjYzk1YjRlNjQ5MTdhOTdiOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIK
ICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIKICNp
bmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCkBAIC0yNDgsNiArMjQ5LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiwKICAgICAgICAg
Ym9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNpemUpOworCisgICAgdm9pZCBoYW5k
bGVEZWxldGVCeUlkKAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUq
IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzKTsKICAgICAK
ICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBmb3Ig
dGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9uIG5v
IGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBiZSBl
bWl0dGVkLgpAQCAtNDYxMyw2ICs0NjE3LDcxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQoCiAgICAgICAgIGdldHRlciwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgcmVnaXN0
ZXJPZmZzZXQsICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIHByZWRpY3Rpb24pOwogfQogCit2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3Rl
ciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAg
ICBEZWxldGVCeVN0YXR1cyBkZWxldGVCeVN0YXR1cykKK3sKKyAgICBpZiAoIWRlbGV0ZUJ5U3Rh
dHVzLmlzU2ltcGxlKCkgfHwgZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgIT0gMSB8
fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQoZGVzdGluYXRp
b24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVy
TnVtYmVyKSwgYmFzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGRl
bGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpID09IDEpOworICAgIERlbGV0ZUJ5SWRWYXJp
YW50IHZhcmlhbnQgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpWzBdOworCisgICAgaWYgKCF2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyRGVsZXRl
QnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkRGVs
ZXRlQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwgYmFzZSk7
CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAgICBzZXQo
ZGVzdGluYXRpb24sIGpzQ29uc3RhbnQoanNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIG11c3RDaGVja0NlbGwgPSBmYWxzZTsK
KyAgICBib29sIGRlc3Ryb3lzQnV0dGVyZmx5ID0gdmFyaWFudC5kZXN0cm95c0J1dHRlcmZseSht
dXN0Q2hlY2tDZWxsKTsKKworICAgIGlmIChtdXN0Q2hlY2tDZWxsKSB7CisgICAgICAgIHNldChk
ZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlk
ZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
ZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVj
b3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRl
bGV0ZUJ5U3RhdHVzKSksIGJhc2UpOworICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9w
SW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJh
c2UpOworICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hw
b2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpKTsKKyAgICBBU1NFUlQodmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSk7CisgICAgQVNTRVJUKGlzVmFsaWRPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOwor
CisgICAgTm9kZSogcHJvcGVydHlTdG9yYWdlOworICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24g
PSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKworICAgIGlmIChkZXN0cm95c0J1dHRlcmZseSkg
eworICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5m
byhtX2NvbnN0YW50TnVsbCkpOworICAgICAgICBhZGRUb0dyYXBoKE51a2VTdHJ1Y3R1cmVBbmRT
ZXRCdXR0ZXJmbHksIGJhc2UsIHByb3BlcnR5U3RvcmFnZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGJhc2UpOworCisgICAgICAgIFN0b3Jh
Z2VBY2Nlc3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOwor
ICAgICAgICBkYXRhLT5vZmZzZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAgICAgICBkYXRhLT5p
ZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKworICAgICAgICBhZGRUb0dyYXBo
KAorICAgICAgICAgICAgUHV0QnlPZmZzZXQsCisgICAgICAgICAgICBPcEluZm8oZGF0YSksCisg
ICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UsCisgICAgICAgICAgICBiYXNlLAorICAgICAgICAg
ICAganNDb25zdGFudChKU1ZhbHVlKCkpKTsKKyAgICB9CisKKyAgICBhZGRUb0dyYXBoKFB1dFN0
cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICBzZXQoZGVzdGluYXRpb24s
IGpzQ29uc3RhbnQoanNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKSk7CisgICAgcmV0dXJuOwor
fQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKICAgICBOb2RlKiBiYXNlLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1
cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKIHsKQEAgLTU5NDMsNyArNjAxMiwxMSBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigp
OwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAgICAgICAgc2V0KGJ5dGVj
b2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVy
KSwgYmFzZSkpOworICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMgPSBE
ZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICBjdXJyZW50
Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNvZGUubV9k
c3QsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiMjMxOGZlMDNhZWQ0MWUwMzA5NTg3ZTdk
ZjkwNzY5Y2IwNGUzYzQ5Li5iYWI3N2FmMGQzZDg3MTY5ZjY1MDc2MTExODNhNWIzYTRjMmJmZGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNDczLDYg
KzQ3Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0
IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgd3JpdGUo
U2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggZWU5OGZhYzIz
MDUzNDk5MzA1OTQ4YTdjNDAyZGYzOGQyYmYwNmRlYi4uZjE3NDVlY2FhMDE1YTk2ZGViZjBkYzFh
OWJhYTkyODEyMWQzOTY1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTg2LDYgKzg2LDcgQEAgYm9vbCBjbG9iYmVyc0V4
aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgLy8gVGhl
c2UgZG8gY2xvYmJlciBtZW1vcnksIGJ1dCBub3RoaW5nIHRoYXQgaXMgb2JzZXJ2YWJsZS4gSXQg
bWF5IGJlIG5pY2UgdG8gc2VwYXJhdGUgdGhlCiAgICAgICAgIC8vIGhlYXBzIGludG8gdGhvc2Ug
dGhhdCBhcmUgb2JzZXJ2YWJsZSBhbmQgdGhvc2UgdGhhdCBhcmVuJ3QsIGJ1dCB3ZSBkb24ndCBk
byB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg0NDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCA1NWQzYzhmZDVkY2Y4ZmEyZWZiYTM3Zjk2ZGM5MDk5ZDQ5NzI1MTgxLi4w
OGU4YTQ0ZGQxMzE4MWY2NDg4ZjdmZmYzZDZlN2U2NTkwYmE1OTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yNDUsNiArMjQ1LDcgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBEYXRlR2V0SW50MzJP
ck5hTjoKICAgICBjYXNlIERhdGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlOTdkZTEw
ZjZmNGNkYzE1YmFlZmIxMGI3ZWM2MDYyODI3ODM1OTU1Li4yMzhlYWYxOTgwZWU2OTA3ODMwYzlk
Mjk3MGVhNjFjNzNkOTRhNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTI1ODAsNiArMjU4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
RmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgIGNhc2Ug
Q3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBiOTI4ODEwZTEwMTU1M2IxOWFmNTEz
NDQyYzAzZWJlZWMwNDgwZjJiLi4xY2NhOGIyYWM0MWNiZTdmNDk2ZDNjOTZhN2I4ZGQxMDAwMmQ1
ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEwOSw2
ICsxMDksNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0
ckNhdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTM0NTViNWMyOWYwNzBm
ZWYyZjk5MTk1MmJjZmYwMDdmZWE5MTcyNi4uM2Y3YWU5ODk3M2M5ZTFhNjJlY2QxYTcyZjkyNTdk
NzMxMDI4NTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTI5NzYsNiAr
Mjk3NiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3Rh
dHVzKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc0RlbGV0ZUJ5U3RhdHVzKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOworICAgIH0KKworICAg
IERlbGV0ZUJ5U3RhdHVzKiBkZWxldGVCeVN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzRGVsZXRlQnlTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxEZWxldGVC
eVN0YXR1cyo+KCk7CisgICAgfQorCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRTdHJlYW0m
IG91dCkKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQxKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZTIxMWVhNzdkODU0MTk5YmI4NDYzZmFlYzM3YmY1YzQx
YzVmOTdlNy4uZGZiZjVkYjM4MGJmNTZjOTJiNzY1ZTEwMWUxNzk4N2YwNTgzMTZiOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNTI2LDYgKzUyNiw3IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhGaWx0ZXJHZXRCeVN0YXR1
cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1cywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGaWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIC8qIERhdGEgdmlldyBhY2Nlc3MgKi8gXAogICAgIG1hY3JvKERhdGFWaWV3
R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSAvKiBUaGUgZ2V0cyBhcmUg
bXVzdCBnZW5lcmF0ZSBmb3Igbm93IGJlY2F1c2UgdGhleSBkbyBib3VuZHMgY2hlY2tzICovIFwK
ICAgICBtYWNybyhEYXRhVmlld0dldEZsb2F0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dERvdWJsZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKaW5kZXggMDVhY2RmMjM4NzY5NzNm
ODhlODJiOWE3M2IzNDllZTc3OWI1Yjk4NC4uZDAwZWE2MWVhMjk1ZDE2NzAzZjU2NjU2OGZhZTk5
NzE2NTFhMTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0xMjIwLDYgKzEyMjAs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTI1NzAsNiArMjU3MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5pc1BoYW50b21BbGxvY2F0aW9uKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmVXaXRob3V0Q2hlY2tzKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4
NThiMzhjMTZhNjVhOGM4ZWJkYjlkNDM3MDEyODM0NzJhNTBhLi44ZWU5MDliMzYwMWMwNzAyNjUx
MTk0NGNiYWZhNjY4ZWIyMzdiODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTM5NSw2
ICsxMzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJ
ZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2Fz
ZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBjYXNlIERhdGFWaWV3U2V0OgogICAgICAgICBj
YXNlIEludmFsaWRhdGlvblBvaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAppbmRleCBiYWRmZTFiMmQxNDI5YjJlMDU2NGU2MDFhMGM3ZmM5NjY0YjU1
ZWFjLi44YWM3MWZiYThlODQ3MDBjOTczZDEyYjc4NDFkMzRlN2QyNGU5ZjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzYxLDYgKzM2MSw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0aGVzZSB0byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdoZXJlIHdlIHB1dCB0
aGVtLCBzaW5jZSB3ZSB3YW50IHRoZW0KICAgICAgICAgLy8gdG8gY2FwdHVyZSAicHJvZmlsaW5n
IiBhdCB0aGUgcG9pbnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIgcHV0IHRoZW0uCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGIwMTlkODVkZjljMjViMTMwODk5MmFl
NjQ3YjVlYzhhMjc1M2JjNjYuLmZjMmU5M2IxZDg4ZmJjNjM1MWI2MjNkNzM2OWY4N2VkOWRjZDdj
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtNDE5MCw2ICs0MTkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVy
SUNTdGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGIwN2NiMjU3NWQxMDYyNzc4ZDRlYjA3NGRmYzVmYTYxNjYzZGQ5NjAuLjZhOGY1MTJh
OTY2NGU2MzI1MWY3MWY4MWFjNDA5NTY3MjVkNWY3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTI1NSw2ICs1MjU1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmls
dGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAg
ICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0
KG5vZGUpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IDc0ZWE2MThlOTAxMTI5
YTU3ZTJjODNiYjg5MmE3NWI3YjgwNjMzYjcuLjBjMzVhNTM2NWNjNDZlZjNjNzg5OTQ4ZjRkMmU2
MGNjZjAxNzZiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
YXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtMTk4LDYgKzE5OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7CkBAIC0zOTksNiAr
NDAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0
dXM6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSA9PSBjYW5kaWRh
dGUpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA1YzY5ZDFkMzhjMWM2MTA1OTlmZDMwMjk5NzM0MzYwY2IyMjdhY2IyLi41
MDdhOTkyNmNhMDM4MTJmZTk5OWMxZDYwYWZmZTRjNTY5YWU5NWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zOTIsNiArMzkyLDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBG
aWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAg
ICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3Jl
YXRlR2VuZXJhdG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IDgwMzYzOTA3YjllMTcyODMyNzViMjdhNjk1MzMxOGRjNGU2N2I1OWIuLmE0
ZWIzNjA5NWU0OGE1OTdlYjY2YWY3MWVkZDRlYTc3MzI3OTAwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE1NjksNiArMTU2OSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2Ug
RmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Cisg
ICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBjb21waWxlRmls
dGVySUNTdGF0dXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERhdGVHZXRJ
bnQzMk9yTmFOOgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA0ZTMxNDlkZTNmMGU1Y2VlMDhmYTI4OGIwZGQ4OWU4NTdiMGZkMTZiLi4xYjI5
NDIxMDI0YjMyMDVmMGZhYjZjZjg2MmNiMGVjMjVlMTNmMGE0IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIw
LTAzLTA1ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAg
ICAgICBBbGxvdyBkZWxldGVCeUlkIHRvIGJlIGNhY2hlZCBpbiB0aGUgREZHCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2NjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGFz
c2VydCk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQuYmxhY2tib3gpOgorICAgICAgICAobm9J
bmxpbmUuYmxhY2tib3guZG9BbGxvYzEpOgorICAgICAgICAobm9JbmxpbmUuZG9BbGxvYzEpOgor
ICAgICAgICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5qczogQWRkZWQuCisg
ICAgICAgIChhc3NlcnQpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0LmJsYWNrYm94KToKKyAg
ICAgICAgKG5vSW5saW5lLmJsYWNrYm94LnRlc3RTaW5nbGVTdHJ1Y3R1cmUuZG9BbGxvYzEpOgor
ICAgICAgICAobm9JbmxpbmUuYmxhY2tib3gudGVzdFNpbmdsZVN0cnVjdHVyZSk6CisgICAgICAg
IChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUu
ZG9EZWxldGUyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElu
bGluZVNpbmdsZVN0cnVjdHVyZS5kb0FsbG9jMik6CisgICAgICAgIChub0lubGluZS50ZXN0U2lu
Z2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS50ZXN0RXhpdC5kb0RlbGV0ZTMpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS50ZXN0RXhpdCk6CisKIDIwMjAt
MDMtMDQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmRsZSBh
biBvdXQgb2YgbWVtb3J5IGVycm9yIHdoaWxlIGNvbnN0cnVjdGluZyB0aGUgQnl0ZWNvZGVHZW5l
cmF0b3IuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVy
dHktYWxsb2NhdGlvbi1zaW5raW5nLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjYzNDY0ZjMxNzdj
YjU5ZmE2Y2Y5MjRlMTQyMjc0NjU5NDA0MTM1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcwpAQCAt
MCwwICsxLDI2IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAz
IgorCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lubGluZShh
c3NlcnQpCisKK2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4geAorfQorbm9Jbmxp
bmUoYmxhY2tib3gpCisKK2Z1bmN0aW9uIGRvQWxsb2MxKCkgeworICAgIGxldCBvYmogPSB7fQor
ICAgIG9iai54ID0gNQorICAgIG9iai55ID0gNworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkp
CisgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5l
KGRvQWxsb2MxKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDAwOyArK2kpIHsKKyAgICBk
b0FsbG9jMSgpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFy
aWFudC1kZWxldGUtcHJvcGVydHkuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFy
aWFudC1kZWxldGUtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3Y2JjYmQ2OTliM2IwMzI2N2Ni
MDFmMTI3YTBmNTIyYzFlYjVkMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDQxIEBACisv
L0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIgorCitmdW5jdGlvbiBh
c3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9CisKK2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsK
KyAgICByZXR1cm4geAorfQorbm9JbmxpbmUoYmxhY2tib3gpCisKK2Z1bmN0aW9uIHBvbHl2YXJp
YW50KHgpIHsKKyAgICBhc3NlcnQoZGVsZXRlIHgueCkKK30KKworZnVuY3Rpb24gZG9BbGxvYzEo
KSB7CisgICAgbGV0IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLnkgPSA3CisgICAg
b2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICBwb2x5dmFyaWFudChvYmopCisgICAgcmV0dXJu
IG9iai55Cit9Citub0lubGluZShkb0FsbG9jMSkKKworZnVuY3Rpb24gZG9BbGxvYzIoKSB7Cisg
ICAgbGV0IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLmIgPSA5CisgICAgb2JqLnkg
PSA3CisgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICBwb2x5dmFyaWFudChvYmopCisg
ICAgcmV0dXJuIG9iai55Cit9Citub0lubGluZShkb0FsbG9jMikKKworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgZG9BbGxvYzEoKQorICAgIGRvQWxsb2MyKCkKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpz
IGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODNiYWJmZDQwNzFlZDQ1NDE4NGU2MmYyZWMwMzM0MWMxYWM1M2IzZQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzCkBAIC0w
LDAgKzEsODcgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRp
dGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30KK25v
SW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAgIHJldHVybiB4Cit9
Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZSgpIHsK
KyAgICBmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAg
IG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChv
YmoueSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICAgICAgcmV0dXJuIG9iai55
CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzEoKQorICAgIH0KK30KK25vSW5saW5l
KHRlc3RTaW5nbGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1
cmUoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUyKG8pIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0
ZSBvLngpCisgICAgfQorCisgICAgZnVuY3Rpb24gZG9BbGxvYzIoKSB7CisgICAgICAgIGxldCBv
YmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3CisgICAgICAgIG9i
ai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGRvRGVsZXRlMihvYmopCisgICAgICAgIHJl
dHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMikKKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTIoeyBpLCBmOiA0IH0pCisg
ICAgICAgIGRvRGVsZXRlMih7IGksIGU6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgZDog
NCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7
IGksIGI6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYTogNCB9KQorICAgICAgICBkb0Fs
bG9jMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgZG9BbGxvYzIoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RJbmxpbmVTaW5nbGVT
dHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RFeGl0KCkgeworICAgIGZ1bmN0aW9uIGRvRGVsZXRl
MyhvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICB9CisgICAgbm9Jbmxp
bmUoZG9EZWxldGUzKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewor
ICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGY6IDQgfSkKKyAgICAg
ICAgZG9EZWxldGUzKHsgaSwgZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBkOiA0IH0p
CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwg
YjogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUzKHsgaSwg
YTogNCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RFeGl0KQorCit0ZXN0U2luZ2xlU3RydWN0
dXJlKCkKK3Rlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdEV4aXQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393045</attachid>
            <date>2020-03-09 09:32:53 -0700</date>
            <delta_ts>2020-03-12 17:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200309093252.patch</filename>
            <type>text/plain</type>
            <size>66104</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjNhNTU1Yzc5Mjc4OWM1NjZkODM2NmE1ZTI4ZTA2ODc2OWFhZDQzLi45MmJkZjE2Njg1MjNkMWQ2
NThiZDkwM2U3Yzg0MGM0MDViNjY3NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMC0wMy0wNSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhl
IERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4
NjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biB3ZSBzZWUgdGhhdCB0aGUgZGVsZXRlQnlJZCBpbmxpbmUgY2FjaGUgb25seSBzYXcgb25lIHN0
cnVjdHVyZSwgd2UgaW5saW5lIGl0IGludG8gdGhlIERGRy4gVGhpcyBpbnZvbHZlcworICAgICAg
ICBjcmVhdGluZyBhIG5ldyBub2RlLCBGaWx0ZXJEZWxldGVCeVN0YXR1cywgYW5kIHRoZW4gdHVy
bmluZyB0aGVzZSBEZWxldGVCeUlkIG5vZGVzIGludG8gYSBGaWx0ZXJEZWxldGVCeVN0YXR1cywK
KyAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsIFB1dEJ5T2Zmc2V0LCB0aGVuIFB1dFN0cnVjdHVyZS4g
VGhlIGxvZ2ljIGZvciBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgCisgICAgICAgIFB1dEJ5SWQsIGdpdmluZyBpbmxpbmVkIGZ1bmN0aW9ucyB0aGUgb3Bw
b3J0dW5pdHkgdG8gdXNlIG9ubHkgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcKKyAgICAgICAgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRp
b24uCisKKyAgICAgICAgVGhlIGJlbmNobWFyayBzaG93cyBhIDJ4IGltcHJvdmVtZW50IG9uIHBv
bHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eSwgYW5kIGEgNTAlIGltcHJvdmVtZW50IG9uIGRlbGV0
ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAqIGJ5
dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0
ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZhcmlhbnQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlk
VmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmF0
dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OnZpc2l0QWdn
cmVnYXRlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXAgY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dCBjb25zdCk6CisgICAgICAgICog
Ynl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0
ZUJ5SWRWYXJpYW50OjpvbGRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFy
aWFudDo6bmV3U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OnJl
c3VsdCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpvZmZzZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6ZGVzdHJveXNCdXR0ZXJmbHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6aXNQcm9wZXJ0eVVuc2V0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b3ZlcmxhcHMpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRl
bGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0
dXM6OmNvbXB1dGVGb3JCYXNlbGluZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpE
ZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OnNsb3dW
ZXJzaW9uIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6Om1lcmdlKToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRlbGV0
ZUJ5U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVz
OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0
KToKKyAgICAgICAgKiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9JQ1N0YXR1c01hcC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAg
ICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpT
Qzo6UmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuaDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFj
aFZlY3Rvcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVE
ZWxldGVCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9l
c0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdG
aXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUp
OgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5o
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0RlbGV0ZUJ5U3RhdHVzKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpkZWxldGVCeVN0YXR1cyk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9F
eGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisKIDIwMjAtMDMt
MDUgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ09ubHld
IDMyLWJpdHMgd2FybmluZyBvbiBtZW1zZXQgb2YgSlNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGY3YzY2NjJmN2ZlNTY3MDlmNDUwOTRjMDczZjU1YzUwODFjYTg4
N2UuLjM2ODQ4YzI1NjM0ZmI3YTY0NjBhNmQ2MjQ5MjhkMjRkMDIxYzcyOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUwMiw2ICs1MDIsOCBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL0NvZGVUeXBlLmgK
ICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5o
CisgICAgYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmgKICAgICBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRhYmxlSW5mby5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiNzQ1NjUxN2Y4Zjc0YzY5ZjFj
OWQ1YmRjMjAyYzRmNmU0NDE4NWQuLjVkYmUzNzQ3NjU2ZGQ1M2U1MWY3NjMwMzMwNjA0YzBhOTll
Nzc5YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDcgKzExNzgsOSBA
QAogCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNB
NjAxMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFG
REJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTcz
OSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKKwkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8q
IERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQu
aCAqLzsgfTsKIAkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xv
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzM0QjY1
NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTczQUQwNjI5MjNGRjY2MjYwMEY1
MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggKi87IH07CiAJCTczRTM3OTk0MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJl
bmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNF
Mzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJ
CTc1OTNDODk4QkU3MTRBNjRCRTkzQTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBB
QzlFMzY0RCAvKiBXYXNtQ29udGV4dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2Fz
bU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzkwMDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzk3Miw3ICszOTc0LDExIEBACiAJ
CTcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NCMUQwRDMxOEIwMDVFNjBC
RSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVCeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MzE5MEQ5NjI0MDA5MzQ5MDBGODkxQzkgLyogRGVsZXRlQnlT
dGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVsZXRlQnlTdGF0dXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRl
UHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZVBy
b3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3M0FEMDYyODIzRkY2
NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlT
dGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAw
OTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BT
dHJlbmd0aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkx
MDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNS
ZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0Iy
NUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTgyMzksNiArODI0NSwxMCBAQAogCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkz
QyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlGRTUwNjg2NjFBRTI1
RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLywKIAkJCQlGRTUwNjg2NDFB
RTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggKi8sCisJCQkJNzMxMUZBMzMy
NDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmNwcCAqLywKKwkJCQk3MzExRkEz
MTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCAqLywKKwkJCQk3MzE5MEQ5
NjI0MDA5MzQ5MDBGODkxQzkgLyogRGVsZXRlQnlTdGF0dXMuY3BwICovLAorCQkJCTczQUQwNjI4
MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oICovLAogCQkJCTBGQkMwQUU0MTQ5
NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCQzBBRTUxNDk2
QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi8sCiAJCQkJMEYyRUJCQUExREVERjk0
RTAwOTkwMzY5IC8qIERpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwICovLApAQCAtOTIxMiw2ICs5MjIy
LDggQEAKIAkJCQlGRTUwNjg2NTFBRTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1w
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCQjFERUY4NjQ1
MDAyQzAwOUUgLyogRGVsZXRlQWxsQ29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzMx
MUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk3M0FEMDYyOTIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0
eVNsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBE
ZXN0cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4
REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDc2ZjFjNjk0ODVjNmZjYmVlNDg3ZTVhYzk4NmNhNDYzNjM1M2FlYmUu
LjVlNmExNzQ1N2FiZmM3MjA0NmJiMWI5ZjlmODFjZWRkNGJiMTc2MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTIxOCw2ICsyMTgsOCBAQCBieXRlY29kZS9ERkdFeGl0UHJvZmls
ZS5jcHAKIGJ5dGVjb2RlL0RhdGFGb3JtYXQuY3BwCiBieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suY3BwCiBieXRlY29kZS9EZWZlcnJlZFNvdXJjZUR1bXAuY3BwCitieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5jcHAKK2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcAogYnl0
ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2suY3Bw
CiBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IDExNGMyM2M1MjgzYjdiZDNh
MGQ3MGJiY2Y0YjUyZWNiMTUyMWMxOGYuLjQ4OTFlZDUxY2E5ZTI1ODRkMGNhODcyNWNhZmE2NGNi
ZGZlNzhhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2Fz
ZS5jcHAKQEAgLTEyOSwxNSArMTI5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFj
Y2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1
cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCh2bSkpOwot
ICAgIGlmICghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIG9sZFN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkgewotICAgICAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhp
cyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4KLSAgICAg
ICAgLy8gU2VlIHRoZSBEZWxldGUgY29kZSBiZWxvdy4KLSAgICAgICAgYm9vbCBtYXlOZWVkVG9D
aGVja0NlbGw7Ci0gICAgICAgIG5ld1N0cnVjdHVyZS0+bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1h
eU5lZWRUb0NoZWNrQ2VsbCk7Ci0KLSAgICAgICAgaWYgKG1heU5lZWRUb0NoZWNrQ2VsbCkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICBBU1NFUlQoIW5ld1N0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkpOwogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4obmV3IEFjY2Vzc0Nh
c2Uodm0sIG93bmVyLCBEZWxldGUsIGlkZW50aWZpZXIsIG9mZnNldCwgbmV3U3RydWN0dXJlLCB7
IH0sIHsgfSkpOwogfQogCkBAIC0xOTQ5LDE5ICsxOTQxLDkgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yOjpQcmVzZXJ2ZWRTdGF0ZSBwcmVzZXJ2ZWRTdGF0ZSA9CiAgICAg
ICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0LCBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNlKTsK
IAotICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKLSAgICAgICAgYm9vbCBoYXNJbmRl
eGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVl
ZFRvQ2hlY2tDZWxsKTsKLSAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSB5ZXQg
c28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgotICAgICAgICAvLyBT
ZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5LgotICAgICAgICBBU1NFUlQoIW1heU5lZWRUb0NoZWNrQ2VsbCk7Ci0gICAgICAgIC8vIENs
ZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBvdXIgcHV0
IGNvZGUgZXhwZWN0cyB0aGlzLgotICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRD
bGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBz
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFkZXI7Ci0K
ICAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CiAKLSAgICAgICAg
aWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgewotICAgICAgICAgICAg
aml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSwgYmFzZUdQUik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZz
ZXQpKSB7CisgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsKICAgICAgICAg
ICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAgICAgIHZhbHVlUmVncywKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDkxZWVmYTAwOThlNjM1YTcxZTZiNzIxZmJlOGMw
YTFmMjllMTllOTYuLjlhYWY2N2U2OWYwZmQwZGQwNDljZjk0M2QyNzBjMTA1ZGI2MTE4MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDk5
LDYgKzE0OTksOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICAgICAgICAgICAgICByZXN1
bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5wdXRTdGF0dXMg
PSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0Nv
bW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5pbnMpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChw
YWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuaW5TdGF0dXMgPSBwYWlyLnNl
Y29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVj
b3JkZWRTdGF0dXNlcy5kZWxldGVzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5m
aXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmRlbGV0ZVN0YXR1cyA9IHBhaXIuc2Vj
b25kLmdldCgpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YmJlMTMwNThlYTE2N2IwNTkxZmE0NmIxNjE2ODk4ZDg2MzhkNmYxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApA
QCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5o
IgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdCwKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICA6
IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkKKyAg
ICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkK
KyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQoreworICAgIEFTU0VSVChv
bGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAg
ICBBU1NFUlQoIW5ld1N0cnVjdHVyZSk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQobmV3U3Ry
dWN0dXJlKTsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCgpIHsg
fQorCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJ
ZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0gb3RoZXI7Cit9CisKK0RlbGV0ZUJ5SWRW
YXJpYW50JiBEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJp
YW50JiBvdGhlcikKK3sKKyAgICBtX2lkZW50aWZpZXIgPSBvdGhlci5tX2lkZW50aWZpZXI7Cisg
ICAgbV9yZXN1bHQgPSBvdGhlci5tX3Jlc3VsdDsKKyAgICBtX29sZFN0cnVjdHVyZSA9IG90aGVy
Lm1fb2xkU3RydWN0dXJlOworICAgIG1fbmV3U3RydWN0dXJlID0gb3RoZXIubV9uZXdTdHJ1Y3R1
cmU7CisgICAgbV9vZmZzZXQgPSBvdGhlci5tX29mZnNldDsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK2Jvb2wgRGVsZXRlQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5t
X2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3Jlc3VsdCAh
PSBvdGhlci5tX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1faWRl
bnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29mZnNldCAhPSBvdGhlci5tX29mZnNldCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2xkU3RydWN0dXJlICE9IG90aGVyLm1f
b2xkU3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fbmV3U3Ry
dWN0dXJlID09IG90aGVyLm1fbmV3U3RydWN0dXJlKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Cit9CisK
K3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIGlmIChtX29sZFN0cnVjdHVyZSkKKyAgICAgICAgbV9vbGRTdHJ1Y3R1cmUtPm1h
cmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9u
ZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5SWRW
YXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4
dChvdXQsIDApOworfQorCit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFBy
aW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KikgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwi
KTsKKyAgICBvdXQucHJpbnQoImlkPSciLCBtX2lkZW50aWZpZXIsICInLCByZXN1bHQ9IiwgbV9y
ZXN1bHQpOworICAgIGlmIChtX29sZFN0cnVjdHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIsICIs
ICptX29sZFN0cnVjdHVyZSk7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBvdXQu
cHJpbnQoIiAtPiAiLCAqbV9uZXdTdHJ1Y3R1cmUpOworICAgIG91dC5wcmludCgiLCBvZmZzZXQg
PSAiLCBvZmZzZXQoKSk7CisgICAgb3V0LnByaW50KCI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRl
QnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlk
VmFyaWFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNGNkY2I0NmJmMGJiZDgzZGI4NWMyNDE2YmI5YjRmZjU5
Y2UwMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVsZXRlQnlJZFZhcmlhbnQuaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRl
ICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIgorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0
LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbExpbmtTdGF0dXM7CitjbGFzcyBEZWxldGVCeVN0
YXR1czsKK3N0cnVjdCBEdW1wQ29udGV4dDsKKworY2xhc3MgRGVsZXRlQnlJZFZhcmlhbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERlbGV0ZUJ5SWRWYXJp
YW50KAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyLCBib29sIHJlc3VsdCwKKyAgICAgICAg
U3RydWN0dXJlKiBvbGRTdHJ1Y3V0cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0
eU9mZnNldCk7CisKKyAgICB+RGVsZXRlQnlJZFZhcmlhbnQoKTsKKworICAgIERlbGV0ZUJ5SWRW
YXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisgICAgRGVsZXRlQnlJZFZhcmlhbnQm
IG9wZXJhdG9yPShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworCisgICAgU3RydWN0dXJlKiBv
bGRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQorICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKCkgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KKyAgICBib29sIHJlc3Vs
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9CisKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorCisgICAgYm9vbCBpc1Byb3BlcnR5VW5z
ZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0OyB9CisKKyAgICBi
b29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcik7CisKKyAg
ICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Cisg
ICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsK
KworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBEZWxldGVCeUlkVmFyaWFu
dCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5t
X2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1faWRl
bnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50
aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOworCisgICAgYm9vbCBt
X3Jlc3VsdDsKKyAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZSog
bV9uZXdTdHJ1Y3R1cmU7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVh
YmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkwYWNkNjcxYWU1Y2JlZGQ4MTcwMDc4NDY3ZWVhNmRjYzFjM2Y0ZjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0
dXMuY3BwCkBAIC0wLDAgKzEsMjg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3Rh
dHVzLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKKyNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUgIkxMSW50
RGF0YS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJNb2R1
bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5o
PgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0
dGVyOworfQorCitib29sIERlbGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0
ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1Zhcmlh
bnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3Rh
dHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1
c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQp
Cit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2sp
OworCisgICAgRGVsZXRlQnlTdGF0dXMgcmVzdWx0OworCisjaWYgRU5BQkxFKERGR19KSVQpCisg
ICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisg
ICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2Rl
SW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBV
TlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwor
I2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgRU5BQkxFKEpJVCkKK0RlbGV0
ZUJ5U3RhdHVzOjpEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgeworICAgIGNh
c2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRlID0gTm9J
bmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpT
aW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAgY2FzZSBT
dHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHVi
SW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHViSW5mby50
b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Nsb3dQYXRo
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBDb2RlQmxvY2sqIGJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCit7CisgICAg
U3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFyeShibG9j
ay0+dm0oKSwgc3R1YkluZm8pOworICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkpKQorICAg
ICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKworICAgIERl
bGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsKKyAgICBz
d2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNl
dDoKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOworCisgICAg
Y2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIGxpc3Qg
PSBzdHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZvciAodW5zaWduZWQgbGlzdEluZGV4ID0g
MDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRleCkgeworICAgICAgICAgICAg
Y29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlzdEluZGV4KTsKKyAgICAgICAg
ICAgIGlmIChhY2Nlc3MudmlhUHJveHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRl
QnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKworICAgICAg
ICAgICAgaWYgKGFjY2Vzcy51c2VzUG9seVByb3RvKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisK
KyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVjdHVyZSgpOwor
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoYWNj
ZXNzLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzOgor
ICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25Db25maWd1cmFibGU6IHsKKyAg
ICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVy
KCksIGFjY2Vzcy50eXBlKCkgPT0gQWNjZXNzQ2FzZTo6RGVsZXRlTWlzcyA/IHRydWUgOiBmYWxz
ZSwgc3RydWN0dXJlLCBudWxscHRyLCBpbnZhbGlkT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZv
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgQWNjZXNzQ2FzZTo6RGVsZXRlOiB7CisgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJy
ZW50bHkoc3RydWN0dXJlLCBhY2Nlc3MuaWRlbnRpZmllcigpLnVpZCgpLCBvZmZzZXQpOworICAg
ICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0LCBvZmZzZXQgPT0gYWNjZXNzLm9mZnNl
dCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpz
dHViSW5mbyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZh
cmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCB0cnVlLCBzdHJ1Y3R1cmUsIG5ld1N0
cnVjdHVyZSwgYWNjZXNzLm9mZnNldCgpKTsKKworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0
LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xv
d1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoKTsKK30KKworRGVs
ZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisgICAgSUNTdGF0dXNDb250
ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQoreworICAgIEJ5
dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwor
ICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKGJhc2VsaW5lQmxvY2ss
IGJ5dGVjb2RlSW5kZXgpOworCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBj
b250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC0+Z2V0KGNv
ZGVPcmlnaW4pOworCisgICAgICAgIGF1dG8gYmxlc3MgPSBbJl0gKGNvbnN0IERlbGV0ZUJ5U3Rh
dHVzJiByZXN1bHQpIC0+IERlbGV0ZUJ5U3RhdHVzIHsKKyAgICAgICAgICAgIGlmICghY29udGV4
dC0+aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7CisgICAgICAgICAgICAgICAgRGVsZXRlQnlTdGF0
dXMgYmFzZWxpbmVSZXN1bHQgPSBjb21wdXRlRm9yQmFzZWxpbmUoCisgICAgICAgICAgICAgICAg
ICAgIGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsK
KyAgICAgICAgICAgICAgICBiYXNlbGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOworICAgICAgICAg
ICAgICAgIHJldHVybiBiYXNlbGluZVJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChkaWRFeGl0LmlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgfTsKKworICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBE
ZWxldGVCeVN0YXR1cyByZXN1bHQ7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9j
ayk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0
aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBibGVzcyhy
ZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXR1cy5kZWxldGVTdGF0dXMpCisg
ICAgICAgICAgICByZXR1cm4gYmxlc3MoKnN0YXR1cy5kZWxldGVTdGF0dXMpOworICAgIH0KKwor
ICAgIHJldHVybiBjb21wdXRlRm9yQmFzZWxpbmUoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAs
IGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwor
RGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAg
ICBpZiAob2JzZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMo
T2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoKTsKKyAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoTGlrZWx5
VGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6Om1lcmdlKGNvbnN0IERl
bGV0ZUJ5U3RhdHVzJiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIubV9zdGF0ZSA9PSBOb0luZm9y
bWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG1lcmdlU2xvdyA9IFsmXSAoKSB7
CisgICAgICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkgfHwgb3RoZXIub2JzZXJ2ZWRTbG93UGF0
aCgpKQorICAgICAgICAgICAgKnRoaXMgPSBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xv
d1BhdGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqdGhpcyA9IERlbGV0ZUJ5U3RhdHVz
KExpa2VseVRha2VzU2xvd1BhdGgpOworICAgIH07CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsK
KyAgICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAgICAgICp0aGlzID0gb3RoZXI7CisgICAgICAg
IHJldHVybjsKKworICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhl
ci5tX3N0YXRlKQorICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworCisgICAgICAgIGZv
ciAoYXV0byYgb3RoZXJWYXJpYW50IDogb3RoZXIubV92YXJpYW50cykgeworICAgICAgICAgICAg
aWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1lcmdlU2xvdygpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgTGlr
ZWx5VGFrZXNTbG93UGF0aDoKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAg
ICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1
cmVTZXQmIHNldCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKGF1dG8m
IHZhcmlhbnQpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuICFzZXQuY29udGFpbnModmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAgIH0pOworICAgIGlmIChtX3ZhcmlhbnRzLmlz
RW1wdHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247Cit9CisKK3ZvaWQgRGVs
ZXRlQnlTdGF0dXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IGZvciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2
YXJpYW50LnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVz
OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZD
aGVhcCh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOworICAgIHN3aXRjaCAobV9zdGF0
ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgb3V0LnByaW50KCJOb0luZm9y
bWF0aW9uIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBvdXQu
cHJpbnQoIlNpbXBsZSIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpa2VseVRha2VzU2xv
d1BhdGg6CisgICAgICAgIG91dC5wcmludCgiTGlrZWx5VGFrZXNTbG93UGF0aCIpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnBy
aW50KCJPYnNlcnZlZFRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IG91dC5wcmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwgIikiKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5U3RhdHVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWJmMDAyZDQ2ZmU0Y2RjNjM4YTc1Y2ZlMjRjODIxMjBk
NzYzMjIxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRl
ICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUg
IkRlbGV0ZUJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFyeS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgQWNjZXNzQ2FzZTsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIFN0cnVj
dHVyZVN0dWJJbmZvOworCitjbGFzcyBEZWxldGVCeVN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3Qgewor
ICAgICAgICAvLyBJdCdzIHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAg
ICAgIE5vSW5mb3JtYXRpb24sCisgICAgICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBh
Y2Nlc3MuCisgICAgICAgIFNpbXBsZSwKKyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0
aGUgc2xvdyBwYXRoLgorICAgICAgICBMaWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJ
dCBoYXMgYmVlbiBzZWVuIHRvIHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRU
YWtlc1Nsb3dQYXRoLAorICAgIH07CisKKyAgICBEZWxldGVCeVN0YXR1cygpCisgICAgICAgIDog
bV9zdGF0ZShOb0luZm9ybWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBEZWxl
dGVCeVN0YXR1cyhTdGF0ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHN0YXRlICE9IFNpbXBsZSk7CisgICAgfQorCisgICAgc3RhdGljIERl
bGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1
c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4pOworCisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
OyB9CisKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9y
bWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsg
fQorICAgIGJvb2wgb2JzZXJ2ZWRTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
T2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOyB9CisgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CisgICAgY29uc3QgVmVjdG9yPERlbGV0ZUJ5SWRWYXJp
YW50LCAxPiYgdmFyaWFudHMoKSB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CisKKyAgICBEZWxldGVC
eVN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworCisgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNl
IHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlz
IG1heSBiZSBhcHByb3hpbWF0ZS4KKyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQm
KTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1h
cmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFu
dCYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRGVsZXRlQnlTdGF0dXMoU3R1YkluZm9TdW1tYXJ5LCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOworICAgIHZvaWQgbWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmKTsKKworICAgIHN0
YXRpYyBEZWxldGVCeVN0YXR1cyBjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNTdGF0
dXNNYXAmLCBCeXRlY29kZUluZGV4LCBFeGl0RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBz
dGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2soCisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qKTsKKyNlbmRpZgorCisgICAgVmVjdG9yPERl
bGV0ZUJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOworICAgIFN0YXRlIG1fc3RhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JQ1N0YXR1c01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lD
U3RhdHVzTWFwLmgKaW5kZXggZGJkNWE4ODIzMTI0MjJkNGU4YjJlZGQzYjc5ODIyYzc2N2E3YmJj
OC4uZjAzMTkwMTE1YTNiOGU0MmI0ZWI4Yjg3NDAzYWYyZDg0ZTAzNzRlZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKQEAgLTM3LDYgKzM3LDcgQEAg
Y2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgR2V0QnlTdGF0dXM7CiBjbGFzcyBJbkJ5SWRTdGF0dXM7
CiBjbGFzcyBQdXRCeUlkU3RhdHVzOworY2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbzsKIHN0cnVjdCBCeVZhbEluZm87CiAKQEAgLTQ4LDYgKzQ5LDcgQEAgc3Ry
dWN0IElDU3RhdHVzIHsKICAgICBHZXRCeVN0YXR1cyogZ2V0U3RhdHVzIHsgbnVsbHB0ciB9Owog
ICAgIEluQnlJZFN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07CiAgICAgUHV0QnlJZFN0YXR1
cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9OworICAgIERlbGV0ZUJ5U3RhdHVzKiBkZWxldGVTdGF0
dXMgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgSUNTdGF0
dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IGM5
NDg0YjQ4NWFkZmU2ZGFiNGNjZjJiN2FhNjQ1YmY3ODg5ODA4MzIuLmQ2MTVhMTNkOWMzYzQ3NWE2
MTZjMmU1NDc3Mjk1NTQ2MTY5YzQ0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAgUmVjb3Jk
ZWRTdGF0dXNlcyYgUmVjb3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMm
JiBvdGhlcikKICAgICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKICAgICBwdXRzID0gV1RG
TW92ZShvdGhlci5wdXRzKTsKICAgICBpbnMgPSBXVEZNb3ZlKG90aGVyLmlucyk7CisgICAgZGVs
ZXRlcyA9IFdURk1vdmUob3RoZXIuZGVsZXRlcyk7CiAgICAgc2hyaW5rVG9GaXQoKTsKICAgICBy
ZXR1cm4gKnRoaXM7CiB9CkBAIC03NSwxMCArNzYsMjAgQEAgSW5CeUlkU3RhdHVzKiBSZWNvcmRl
ZFN0YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwg
Y28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitEZWxldGVCeVN0YXR1cyogUmVjb3JkZWRTdGF0
dXNlczo6YWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29u
c3QgRGVsZXRlQnlTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VV
bmlxdWU8RGVsZXRlQnlTdGF0dXM+KHN0YXR1cyk7CisgICAgRGVsZXRlQnlTdGF0dXMqIHJlc3Vs
dCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBkZWxldGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihj
b2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiBzbG90
VmlzaXRvcikKIHsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQogICAgICAgICBwYWlyLnNl
Y29uZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6
IGRlbGV0ZXMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRv
cik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
IHNsb3RWaXNpdG9yKQpAQCAtODksNiArMTAwLDggQEAgdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpt
YXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCiAgICAgICAgIHBhaXIuc2Vjb25k
LT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogaW5zKQog
ICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAgIGZvciAo
YXV0byYgcGFpciA6IGRlbGV0ZXMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChz
bG90VmlzaXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6ZmluYWxpemVXaXRob3V0
RGVsZXRpbmcoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmgKaW5kZXggYjM1NWU5YjYyMzM4NDYyOTI2NDgyYzdjMWI5MWY0MjFm
ZmU2MjBkMC4uOWU3MDU1ZDI0M2YyNGFhNmFmNWFhMDkyYWQzMDJlZjE1YThkMDU3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVz
LmgiCisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIKICNpbmNsdWRlICJHZXRCeVN0YXR1cy5o
IgogI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIK
QEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewogICAgIEdldEJ5U3Rh
dHVzKiBhZGRHZXRCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlTdGF0dXMm
KTsKICAgICBQdXRCeUlkU3RhdHVzKiBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
LCBjb25zdCBQdXRCeUlkU3RhdHVzJik7CiAgICAgSW5CeUlkU3RhdHVzKiBhZGRJbkJ5SWRTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEluQnlJZFN0YXR1cyYpOworICAgIERlbGV0ZUJ5
U3RhdHVzKiBhZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgRGVsZXRl
QnlTdGF0dXMmKTsKICAgICAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7
CiAgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwpAQCAtNjMsMTIgKzY1LDE0IEBA
IHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICAgICAgZnVuYyhnZXRzKTsKICAgICAgICAg
ZnVuYyhwdXRzKTsKICAgICAgICAgZnVuYyhpbnMpOworICAgICAgICBmdW5jKGRlbGV0ZXMpOwog
ICAgIH0KICAgICAKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVP
cmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeVN0YXR1cz4+PiBnZXRzOwogICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFB1dEJ5SWRTdGF0dXM+Pj4gcHV0
czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxJbkJ5
SWRTdGF0dXM+Pj4gaW5zOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1
bmlxdWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNjc5NWE0MmQ5NDYzOTRjYmRl
NTMwOTY4OGNkYzQ2Li5lYTIyMDRjMGM0MDJmYzhjY2M0OGM0OWY0NDIyNGY3Y2VhM2U0OTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCkBAIC00MTA2LDYgKzQxMDYsNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
RGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBicmVh
azsKIApAQCAtNDI4Nyw2ICs0Mjg4LDEzIEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6IHsKKyAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYg
KHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5kZWxldGVC
eVN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5k
ZXggNTNiMDE0ODNlZDQxNDkwODQ4NzUxZGRiMzM2OWQyMTZiY2I1ZDVjOC4uYmU2NzEyMWNlMzEz
ODVkZmQ5NWU3ZGI0MTg5YmQ4Y2NmNzg5ODgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC00
MDcsNiArNDA3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CkBAIC0xMjY2LDcgKzEyNjcs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6IHsKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
KyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghaXNFbGltaW5hdGVkQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgx
YmM5ZDJmMWIxZC4uNjFlY2NlY2MyOTU5MTg4Zjg3YmFlYWYyNTU5ZTQwYjk4MmEzMWIxZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJERkdDbG9iYmVyc0V4aXRTdGF0ZS5oIgogI2luY2x1
ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgorI2luY2x1ZGUgIkRlbGV0
ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJH
ZXRCeVN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgpAQCAtMjQ4LDYgKzI0OSw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0
YXR1cyYsCiAgICAgICAgIGJvb2wgaXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplKTsK
KworICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRl
c3RpbmF0aW9uLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVC
eVN0YXR1cyk7CiAgICAgCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBl
bWl0IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAg
IC8vIGNvbmRpdGlvbiBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJs
ZSBjaGVjayBjYW4gYmUgZW1pdHRlZC4KQEAgLTQ2MTMsNiArNDYxNyw1NyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBnZXR0ZXIsIG51bWJlck9mUGFyYW1l
dGVycyAtIDEsIHJlZ2lzdGVyT2Zmc2V0LCAqdmFyaWFudC5jYWxsTGlua1N0YXR1cygpLCBwcmVk
aWN0aW9uKTsKIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIsCisgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMpCit7CisgICAg
aWYgKCFkZWxldGVCeVN0YXR1cy5pc1NpbXBsZSgpIHx8IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRz
KCkuc2l6ZSgpICE9IDEgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAg
ICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBP
cEluZm8oaWRlbnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKKyAg
ICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVsw
XTsKKworICAgIGlmICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICBhZGRUb0dy
YXBoKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5
U3RhdHVzKSksIGJhc2UpOworICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcElu
Zm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNl
KTsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50
LnJlc3VsdCgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkVG9HcmFwaChG
aWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1
cykpLCBiYXNlKTsKKyAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICBB
U1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgQVNTRVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwor
ICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKTsKKworICAgIE5vZGUq
IHByb3BlcnR5U3RvcmFnZTsKKyAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5t
X3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSk7CisKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQo
KSkpCisgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CisgICAgZWxzZQorICAgICAgICBw
cm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CisKKyAgICBT
dG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQo
KTsKKyAgICBkYXRhLT5vZmZzZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAgIGRhdGEtPmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworCisgICAgYWRkVG9HcmFwaCgKKyAgICAg
ICAgUHV0QnlPZmZzZXQsCisgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgcHJvcGVydHlT
dG9yYWdlLAorICAgICAgICBiYXNlLAorICAgICAgICBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOwor
CisgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7
CisgICAgc2V0KGRlc3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3Vs
dCgpKSkpOworICAgIHJldHVybjsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5
SWQoCiAgICAgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFs
dWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QpCiB7
CkBAIC01OTQzLDcgKzU5OTgsMTEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0
ZWNvZGUubV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsK
LSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBP
cEluZm8oaWRlbnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3Rh
dHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisg
ICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBoYW5kbGVE
ZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVC
eVN0YXR1cyk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggYjIz
MThmZTAzYWVkNDFlMDMwOTU4N2U3ZGY5MDc2OWNiMDRlM2M0OS4uYmFiNzdhZjBkM2Q4NzE2OWY2
NTA3NjExMTgzYTViM2E0YzJiZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKQEAgLTQ3Myw2ICs0NzMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwCmluZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhkMmJmMDZkZWIuLmYx
NzQ1ZWNhYTAxNWE5NmRlYmYwZGMxYTliYWE5MjgxMjFkMzk2NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04Niw2ICs4
Niw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0
aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAg
ICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQg
YXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNTVkM2M4ZmQ1ZGNmOGZhMmVmYmEz
N2Y5NmRjOTA5OWQ0OTcyNTE4MS4uMDhlOGE0NGRkMTMxODFmNjQ4OGY3ZmZmM2Q2ZTdlNjU5MGJh
NTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjQ1LDYg
KzI0NSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBj
YXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgog
ICAgIGNhc2UgRGF0ZUdldEludDMyT3JOYU46CiAgICAgY2FzZSBEYXRlR2V0VGltZToKICAgICBj
YXNlIERhdGFWaWV3R2V0SW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggZTk3ZGUxMGY2ZjRjZGMxNWJhZWZiMTBiN2VjNjA2MjgyNzgzNTk1NS4u
MjM4ZWFmMTk4MGVlNjkwNzgzMGM5ZDI5NzBlYTYxYzczZDk0YTZhNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0yNTgwLDYgKzI1ODAsNyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIEludmFsaWRhdGlv
blBvaW50OgogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXgg
YjkyODgxMGUxMDE1NTNiMTlhZjUxMzQ0MmMwM2ViZWVjMDQ4MGYyYi4uMWNjYThiMmFjNDFjYmU3
ZjQ5NmQzYzk2YTdiOGRkMTAwMDJkNTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwCkBAIC0xMDksNiArMTA5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CmluZGV4IDEzNDU1YjVjMjlmMDcwZmVmMmY5OTE5NTJiY2ZmMDA3ZmVhOTE3MjYuLjNmN2FlOTg5
NzNjOWUxYTYyZWNkMWE3MmY5MjU3ZDczMTAyODUxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCkBAIC0yOTc2LDYgKzI5NzYsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8UHV0QnlJZFN0YXR1cyo+KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNEZWxl
dGVCeVN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJEZWxldGVC
eVN0YXR1czsKKyAgICB9CisKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlQnlTdGF0dXMoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0RlbGV0ZUJ5U3RhdHVzKCkpOworICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXM8RGVsZXRlQnlTdGF0dXMqPigpOworICAgIH0KKwogICAgIHZvaWQgZHVt
cENoaWxkcmVuKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkMSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGUyMTFlYTc3ZDg1
NDE5OWJiODQ2M2ZhZWMzN2JmNWM0MWM1Zjk3ZTcuLmRmYmY1ZGIzODBiZjU2YzkyYjc2NWUxMDFl
MTc5ODdmMDU4MzE2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
QEAgLTUyNiw2ICs1MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oRmlsdGVyR2V0QnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhG
aWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJQ
dXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyRGVsZXRl
QnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBEYXRhIHZpZXcgYWNjZXNzICov
IFwKICAgICBtYWNybyhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1
bHRKUykgLyogVGhlIGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBiZWNhdXNlIHRoZXkg
ZG8gYm91bmRzIGNoZWNrcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
CmluZGV4IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlhNzNiMzQ5ZWU3NzliNWI5ODQuLmQwMGVhNjFl
YTI5NWQxNjcwM2Y1NjY1NjhmYWU5OTcxNjUxYTExOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcApAQCAtMTIyMCw2ICsxMjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJH
ZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBj
YXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1
czoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNTcwLDYgKzI1
NzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
RGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
aXNQaGFudG9tQWxsb2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVt
b3ZlV2l0aG91dENoZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUw
YS4uOGVlOTA5YjM2MDFjMDcwMjY1MTE5NDRjYmFmYTY2OGViMjM3YjgyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKQEAgLTEzOTUsNiArMTM5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
RmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBE
YXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIy
ZTA1NjRlNjAxYTBjN2ZjOTY2NGI1NWVhYy4uOGFjNzFmYmE4ZTg0NzAwYzk3M2QxMmI3ODQxZDM0
ZTdkMjRlOWY1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6
CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3Ro
ZXIgdGhhbiB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCiAgICAgICAgIC8v
IHRvIGNhcHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJl
IHRoZSB1c2VyIHB1dCB0aGVtLgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBi
MDE5ZDg1ZGY5YzI1YjEzMDg5OTJhZTY0N2I1ZWM4YTI3NTNiYzY2Li5mYzJlOTNiMWQ4OGZiYzYz
NTFiNjIzZDczNjlmODdlZDlkY2Q3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQxOTAsNiArNDE5MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRl
ckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZp
bHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAg
ICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUpOwogICAgICAgICBub1Jlc3VsdChu
b2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiMDdjYjI1NzVkMTA2Mjc3OGQ0ZWIwNzRkZmM1
ZmE2MTY2M2RkOTYwLi42YThmNTEyYTk2NjRlNjMyNTFmNzFmODFhYzQwOTU2NzI1ZDVmNzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTUyNTUsNiArNTI1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5v
ZGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNw
cAppbmRleCA3NGVhNjE4ZTkwMTEyOWE1N2UyYzgzYmI4OTJhNzViN2I4MDYzM2I3Li4wYzM1YTUz
NjVjYzQ2ZWYzYzc4OTk0OGY0ZDJlNjBjY2YwMTc2Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5
OCw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVC
eVN0YXR1czoKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBHZXRC
eU9mZnNldDogewpAQCAtMzk5LDYgKzQwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBj
YXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS5ub2RlKCkgPT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUobV9ncmFwaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4YzFjNjEwNTk5ZmQz
MDI5OTczNDM2MGNiMjI3YWNiMi4uNTA3YTk5MjZjYTAzODEyZmU5OTljMWQ2MGFmZmU0YzU2OWFl
OTVkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMzkyLDYgKzM5Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ3JlYXRl
UHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4MDM2MzkwN2I5ZTE3MjgzMjc1YjI3
YTY5NTMzMThkYzRlNjdiNTliLi5hNGViMzYwOTVlNDhhNTk3ZWI2NmFmNzFlZGQ0ZWE3NzMyNzkw
MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CkBAIC0xNTY5LDYgKzE1NjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgog
ICAgICAgICAgICAgY29tcGlsZUZpbHRlcklDU3RhdHVzKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBEYXRlR2V0SW50MzJPck5hTjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCA0NWY0MjM2YTFiYjc3NGViYjUyMzA3NzI2ZTdlZmRm
ZTg0YmFkMTAxLi5mMGIwZWFmMDhiYzA1ZjNmNDU1YWExN2JhNDVkMDQ1MDZkMDA5YTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yMDExLDEyICsy
MDExLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwg
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUp
OwogICAgICAgICAgICAgc2xvdC5zZXRIaXQob2Zmc2V0KTsKLSAgICAgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSkt
Pm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhp
c09iamVjdCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJm
bHkpOwotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0
ZXJmbHkodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCksIG51bGxwdHIpOwotICAgICAgICAg
ICAgICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+bWF4T2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8ICF0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAg
IHRoaXNPYmplY3QtPnNldFN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IDMyMGE0N2E3Yjgz
NDU5YTJiOGQ5N2IyMWQ0NDU3YTE4MWFhMjhlZWYuLmEwNWRmODdiNmVkMjA4YWM4MjM4ODBlM2Zh
NDAxN2U3NTAwMTc1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCkBAIC01MzIsNyArNTMyLDYgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBib29sIGhh
c0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCopIGNvbnN0OwotICAgIGJvb2wgbWF5SGF2ZUlu
ZGV4aW5nSGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0OwogICAgIAogICAgIGJvb2wg
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGlu
ZXMuaAppbmRleCAzZGMxN2I3MzM1OTk0ZTgzZTExMTAyZDBlOWVjYWIwZDZlNDk4MDU3Li4xNWRh
ZDI2ZjljNzgxODljM2VkZmE5YjE4M2FjNzNlYTYxMjg1Mzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNTYsMTkgKzI1Niw2
IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxs
KiBjZWxsKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcq
PihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAotaW5saW5lIGJvb2wg
U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoYm9vbCYgbXVzdENoZWNrQ2VsbCkgY29u
c3QKLXsKLSAgICBtdXN0Q2hlY2tDZWxsID0gZmFsc2U7Ci0gICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
IWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIG11c3RDaGVja0NlbGwgPSB0cnVlOwotICAgIHJldHVy
biB0cnVlOwotfQotCiBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5
cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxl
eGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDRlMzE0OWRlM2YwZTVjZWUwOGZhMjg4YjBkZDg5ZTg1N2IwZmQx
NmIuLjFiMjk0MjEwMjRiMzIwNWYwZmFiNmNmODYyY2IwZWMyNWUxM2YwYTQgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMjAtMDMtMDUgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRoZSBERkcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanM6IEFkZGVkLgorICAg
ICAgICAoYXNzZXJ0KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5ibGFja2JveCk6CisgICAg
ICAgIChub0lubGluZS5ibGFja2JveC5kb0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5kb0Fs
bG9jMSk6CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQuYmxhY2ti
b3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3gudGVzdFNpbmdsZVN0cnVjdHVyZS5kb0Fs
bG9jMSk6CisgICAgICAgIChub0lubGluZS5ibGFja2JveC50ZXN0U2luZ2xlU3RydWN0dXJlKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0
cnVjdHVyZS5kb0RlbGV0ZTIpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVy
ZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLmRvQWxsb2MyKToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSk6CisgICAgICAg
IChub0lubGluZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLnRlc3RFeGl0LmRvRGVsZXRlMyk6
CisgICAgICAgIChub0lubGluZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLnRlc3RFeGl0KToK
KwogMjAyMC0wMy0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
SGFuZGxlIGFuIG91dCBvZiBtZW1vcnkgZXJyb3Igd2hpbGUgY29uc3RydWN0aW5nIHRoZSBCeXRl
Y29kZUdlbmVyYXRvci4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NjM0
NjRmMzE3N2NiNTlmYTZjZjkyNGUxNDIyNzQ2NTk0MDQxMzUKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5n
LmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2gg
U2VyaWVzIDMiCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRp
dGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30KK25v
SW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAgIHJldHVybiB4Cit9
Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gZG9BbGxvYzEoKSB7CisgICAgbGV0IG9i
aiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLnkgPSA3CisgICAgb2JqLnkgPSBibGFja2Jv
eChvYmoueSkKKyAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAgIHJldHVybiBvYmoueQorfQor
bm9JbmxpbmUoZG9BbGxvYzEpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDA7ICsraSkg
eworICAgIGRvQWxsb2MxKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjdjYmNiZDY5OWIz
YjAzMjY3Y2IwMWYxMjdhMGY1MjJjMWViNWQzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9t
aWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEs
NDEgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiCisKK2Z1
bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30KKworZnVuY3Rpb24gYmxhY2ti
b3goeCkgeworICAgIHJldHVybiB4Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24g
cG9seXZhcmlhbnQoeCkgeworICAgIGFzc2VydChkZWxldGUgeC54KQorfQorCitmdW5jdGlvbiBk
b0FsbG9jMSgpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmoueSA9
IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgIHBvbHl2YXJpYW50KG9iaikKKyAg
ICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2MxKQorCitmdW5jdGlvbiBkb0FsbG9j
MigpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmouYiA9IDkKKyAg
ICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgIHBvbHl2YXJpYW50
KG9iaikKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2MyKQorCitmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBkb0FsbG9jMSgpCisgICAgZG9BbGxv
YzIoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1p
bmxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MzhmZDY3NjQ0YjNhMDNiYjA3ZmJkOTMyMTM5YTUyMWYwNGEzZjU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUu
anMKQEAgLTAsMCArMSwxODIgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBp
ZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVk
IikKK30KK25vSW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmKSB7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHJldHVybgorICAg
IH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorbm9JbmxpbmUo
YXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAgIHJldHVybiB4Cit9
Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZSgpIHsK
KyAgICBmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAg
IG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChv
YmoueSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICAgICAgcmV0dXJuIG9iai55
CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzEoKQorICAgIH0KK30KK25vSW5saW5l
KHRlc3RTaW5nbGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1
cmUoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUyKG8pIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0
ZSBvLngpCisgICAgfQorCisgICAgZnVuY3Rpb24gZG9BbGxvYzIoKSB7CisgICAgICAgIGxldCBv
YmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3CisgICAgICAgIG9i
ai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGRvRGVsZXRlMihvYmopCisgICAgICAgIHJl
dHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMikKKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTIoeyBpLCBmOiA0IH0pCisg
ICAgICAgIGRvRGVsZXRlMih7IGksIGU6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgZDog
NCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7
IGksIGI6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYTogNCB9KQorICAgICAgICBkb0Fs
bG9jMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgZG9BbGxvYzIoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RJbmxpbmVTaW5nbGVT
dHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RFeGl0KCkgeworICAgIGZ1bmN0aW9uIGRvRGVsZXRl
MyhvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICB9CisgICAgbm9Jbmxp
bmUoZG9EZWxldGUzKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewor
ICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGY6IDQgfSkKKyAgICAg
ICAgZG9EZWxldGUzKHsgaSwgZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBkOiA0IH0p
CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwg
YjogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUzKHsgaSwg
YTogNCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RFeGl0KQorCitmdW5jdGlvbiB0ZXN0U2lu
Z2xlU3RydWN0dXJlTWlzcygpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNCgpIHsKKyAgICAgICAg
bGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAg
ICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueikK
KyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M0KQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzQo
KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzKQorCitmdW5jdGlv
biB0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpIHsKKyAgICAidXNlIHN0cmljdCIKKwor
ICAgIGZ1bmN0aW9uIGRvQWxsb2M1KCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAg
b2JqLnkgPSA1CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICJ4IiwgeworICAg
ICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MQorICAg
ICAgICB9KQorICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBhc3NlcnRf
dGhyb3dzKCgpID0+IGRlbGV0ZSBvYmoueCkKKyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQor
ICAgIG5vSW5saW5lKGRvQWxsb2M1KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAw
OyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzUoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5n
bGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlTWlz
c05vbkNvbmZpZ3VyYWJsZSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNigpIHsKKyAgICAgICAg
bGV0IG9iaiA9IHt9CisgICAgICAgIG9iai55ID0gNQorICAgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkob2JqLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAg
ICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChv
YmoueSkKKyAgICAgICAgYXNzZXJ0KCEoZGVsZXRlIG9iai54KSkKKyAgICAgICAgcmV0dXJuIG9i
ai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M2KQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzYoKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKQorCitmdW5jdGlvbiB0
ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzcoKSB7Cisg
ICAgICAgIGxldCBvYmogPSB7IGE6IDEsIGI6IDJ9CisgICAgICAgIG9ialsxXSA9IDUKKyAgICAg
ICAgZGVsZXRlIG9ialsxXQorICAgICAgICBibGFja2JveCgoKSA9PiBvYmoueCA9IDUpKCkKKyAg
ICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09IDMpCisgICAgICAgIGFzc2Vy
dChkZWxldGUgb2JqLmEpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLmIpCisgICAgICAgIGFz
c2VydChkZWxldGUgb2JqLngpCisgICAgICAgIGFzc2VydChPYmplY3Qua2V5cyhvYmopLmxlbmd0
aCA9PSAwKQorICAgICAgICBvYmoueCA9IDcKKyAgICAgICAgcmV0dXJuIG9iagorICAgIH0KKyAg
ICBub0lubGluZShkb0FsbG9jNykKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsg
KytpKSB7CisgICAgICAgIGRvQWxsb2M3KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xl
U3RydWN0dXJlRW1wdHkpCisKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdElubGluZVNpbmds
ZVN0cnVjdHVyZSgpCit0ZXN0RXhpdCgpCit0ZXN0U2luZ2xlU3RydWN0dXJlTWlzcygpCit0ZXN0
U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpCit0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNv
bmZpZ3VyYWJsZSgpCit0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393428</attachid>
            <date>2020-03-12 17:06:47 -0700</date>
            <delta_ts>2020-03-13 15:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200312170647.patch</filename>
            <type>text/plain</type>
            <size>91394</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjNhNTU1Yzc5Mjc4OWM1NjZkODM2NmE1ZTI4ZTA2ODc2OWFhZDQzLi43OTk1MzRjY2MxMDA5OTU1
MWZhZWU4NzVlZGNlMDkzZDk1ZWZmNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjEgQEAKKzIwMjAtMDMtMTIgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gd2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBz
dHJ1Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAg
ICAgY3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1
cm5pbmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMs
CisgICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUu
IFRoZSBsb2dpYyBmb3IgcGVzc2ltaXNpbmcgdGhpcyBvcHRpbWl6YXRpb24gaXMgdGhlIHNhbWUg
YXMgZm9yIAorICAgICAgICBQdXRCeUlkLCBnaXZpbmcgaW5saW5lZCBmdW5jdGlvbnMgdGhlIG9w
cG9ydHVuaXR5IHRvIHVzZSBvbmx5IHRoZSBERkcgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCB3aGls
ZSBldmVyeXRoaW5nCisgICAgICAgIGVsc2UgdXNlcyB0aGUgREZHK0Jhc2VsaW5lIGluZm9ybWF0
aW9uLgorCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgTXVsdGlEZWxldGVCeU9mZnNldCBub2Rl
LCBmb3IgdGhlIGNhc2Ugd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgc3RydWN0dXJlcyBzZWVuIGJ5
IHRoZSBkZWxldGUuCisKKyAgICAgICAgVGhlIGJlbmNobWFyayBzaG93cyBhIDJ4IGltcHJvdmVt
ZW50IG9uIHBvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eSwgYW5kIGEgNTAlIGltcHJvdmVtZW50
IG9uIGRlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUpOgorICAg
ICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAp
OgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAg
IChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZhcmlhbnQpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZh
cmlhbnQ6OndyaXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlk
VmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFu
dDo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6ZHVtcCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0IGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om9sZFN0cnVjdHVyZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlJZFZhcmlhbnQ6Om9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
SWRWYXJpYW50Ojppc1Byb3BlcnR5VW5zZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVC
eUlkVmFyaWFudDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgor
ICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKToKKyAgICAg
ICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OkRlbGV0ZUJ5U3RhdHVzKToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeVN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpE
ZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Zmls
dGVyKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OnZpc2l0QWdncmVnYXRlKToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6
RGVsZXRlQnlTdGF0dXM6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0lDU3RhdHVzTWFwLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6OlJlY29y
ZGVkU3RhdHVzZXM6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6
OmFkZERlbGV0ZUJ5U3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6dmlz
aXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVh
cCk6CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oOgorICAgICAgICAoSlND
OjpSZWNvcmRlZFN0YXR1c2VzOjpmb3JFYWNoVmVjdG9yKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJ
Q1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3Rh
dGUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0RGVsZXRlQnlPZmZzZXQpOgor
ICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6Cisg
ICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YTo6d3JpdGVzU3RydWN0
dXJlcyBjb25zdCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpoYXNNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6bXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0RlbGV0ZUJ5U3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpkZWxldGVCeVN0
YXR1cyk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09i
amVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVD
aGVja0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFu
dEFycmF5Q2hlY2tzKToKKyAgICAgICAgKiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAq
IGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTXVsdGlEZWxldGVCeU9mZnNldCk6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIg
Y29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTAzLTA1ICBQYXVsbyBNYXRvcyAgPHBtYXRvc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NPbmx5XSAzMi1iaXRzIHdhcm5pbmcgb24gbWVtc2V0IG9m
IEpTVmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBmN2M2NjYyZjdm
ZTU2NzA5ZjQ1MDk0YzA3M2Y1NWM1MDgxY2E4ODdlLi4zNjg0OGMyNTYzNGZiN2E2NDYwYTZkNjI0
OTI4ZDI0ZDAyMWM3MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01
MDIsNiArNTAyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBieXRlY29kZS9Db2RlVHlwZS5oCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
aAogICAgIGJ5dGVjb2RlL0RhdGFGb3JtYXQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJp
YW50LmgKKyAgICBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0
RXZhbENvZGVDYWNoZS5oCiAgICAgYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAogICAgIGJ5dGVj
b2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmYjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIwMmM0ZjZlNDQxODVkLi41ZGJlMzc0
NzY1NmRkNTNlNTFmNzYzMDMzMDYwNGMwYTk5ZTc3OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTE3OCw3ICsxMTc4LDkgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5
IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJB
QUY3Q0UxRDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQw
RDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87IH07CisJ
CTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzMxMUZBMzEyNDBEQjFEMzAw
M0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi87IH07CiAJCTczNEI2NTU1MjNGNUMxMDQw
MEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQ
cm9wZXJ0eVNsb3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3M0FEMDYyOTIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczQUQwNjI4MjNGRjY2
MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oICovOyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1
MDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1Jl
ZHVjZUxvb3BTdHJlbmd0aC5oICovOyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyog
V2FzbUNvbnRleHRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkw
MDgxMzkxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBX
YXNtTW9kdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTM5NzIsNyArMzk3NCwxMSBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyog
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJB
QUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MzExRkEzMTI0MERCMUQzMDAz
RDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZh
cmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzMyNDBEQjI0OTAw
M0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0
ZUJ5SWRWYXJpYW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxOTBEOTYy
NDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERlbGV0ZUJ5U3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzM0QjY1
NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzNFMzc5OTUyMkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVu
Z3RoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmNwcDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9k
dWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9h
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjM5LDYgKzgyNDUsMTAgQEAK
IAkJCQkwRkM3MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmggKi8sCiAJCQkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNl
RHVtcC5jcHAgKi8sCiAJCQkJRkU1MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291
cmNlRHVtcC5oICovLAorCQkJCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeUlk
VmFyaWFudC5jcHAgKi8sCisJCQkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmggKi8sCisJCQkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5
U3RhdHVzLmNwcCAqLywKKwkJCQk3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlT
dGF0dXMuaCAqLywKIAkJCQkwRkJDMEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2Zp
bGUuY3BwICovLAogCQkJCTBGQkMwQUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmls
ZS5oICovLAogCQkJCTBGMkVCQkFBMURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNh
Y2hlLmNwcCAqLywKQEAgLTkyMTIsNiArOTIyMiw4IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAw
MDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0
QTQ3NjRDNDVGRTg3MUIwNDg1IC8qIERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZCQjczQkIxREVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZv
cnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxl
dGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUz
NTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MzRCNjU1NTIzRjVD
MTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Rjk2MzAzQzFENDE5MkNEMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzdBNDIzRTE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NmYxYzY5NDg1YzZm
Y2JlZTQ4N2U1YWM5ODZjYTQ2MzYzNTNhZWJlLi41ZTZhMTc0NTdhYmZjNzIwNDZiYjFiOWY5Zjgx
Y2VkZDRiYjE3NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTgsNiArMjE4
LDggQEAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCiBieXRlY29kZS9EYXRhRm9ybWF0LmNw
cAogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVm
ZXJyZWRTb3VyY2VEdW1wLmNwcAorYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCitieXRlY29k
ZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3Bw
CiBieXRlY29kZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJs
b2NrRWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAppbmRleCAxMTRjMjNjNTI4M2I3YmQzYTBkNzBiYmNmNGI1MmVjYjE1MjFjMThmLi40ODkx
ZWQ1MWNhOWUyNTg0ZDBjYTg3MjVjYWZhNjRjYmRmZTc4YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC0xMjksMTUgKzEyOSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCiAgICAg
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCwgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdT
dHJ1Y3R1cmUtPnByZXZpb3VzSUQodm0pKTsKLSAgICBpZiAoIW5ld1N0cnVjdHVyZS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSAmJiBvbGRTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpIHsKLSAg
ICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSBzbyB0aGF0IHdlIGRvIG5vdCBuZWVk
IHRvIGNoZWNrIHRoZSBqc2NlbGwuCi0gICAgICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVs
b3cuCi0gICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxsOwotICAgICAgICBuZXdTdHJ1Y3R1
cmUtPm1heUhhdmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOwotCi0gICAgICAg
IGlmIChtYXlOZWVkVG9DaGVja0NlbGwpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9CisgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgb2xk
U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlm
aWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIApAQCAtMTk0OSwxOSAr
MTk0MSw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25T
dGF0ZSYgc3RhdGUpCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVk
U3RhdGUgcHJlc2VydmVkU3RhdGUgPQogICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1
c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRy
YVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKLSAgICAgICAgYm9vbCBtYXlOZWVkVG9DaGVj
a0NlbGw7Ci0gICAgICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+
bWF5SGF2ZUluZGV4aW5nSGVhZGVyKG1heU5lZWRUb0NoZWNrQ2VsbCk7Ci0gICAgICAgIC8vIFdl
IGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gY2hl
Y2sgdGhlIGpzY2VsbC4KLSAgICAgICAgLy8gU2VlIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFk
ZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4KLSAgICAgICAgQVNTRVJUKCFtYXlOZWVk
VG9DaGVja0NlbGwpOwotICAgICAgICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUg
bm8gcHJvcGVydGllcywgc2luY2Ugb3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KLSAgICAgICAg
Ym9vbCBzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgJiYgIWhhc0luZGV4aW5nSGVhZGVyOwotCiAgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1
ZSgpLCB2YWx1ZVJlZ3MpOwogCi0gICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xl
YXJCdXR0ZXJmbHkpIHsKLSAgICAgICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0
ZXJmbHkodm0sIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIGJhc2VHUFIpOwotICAgICAgICB9IGVs
c2UgaWYgKGlzSW5saW5lT2Zmc2V0KG1fb2Zmc2V0KSkgeworICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQobV9vZmZzZXQpKSB7CiAgICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAgICAgICAg
ICAgICAgICB2YWx1ZVJlZ3MsCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA5
MWVlZmEwMDk4ZTYzNWE3MWU2YjcyMWZiZThjMGExZjI5ZTE5ZTk2Li45YWFmNjdlNjlmMGZkMGRk
MDQ5Y2Y5NDNkMjcwYzEwNWRiNjExODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ5OSw2ICsxNDk5LDggQEAgdm9pZCBDb2RlQmxvY2s6
OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiBy
ZXN1bHQpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygp
KS5pdGVyYXRvci0+dmFsdWUucHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0
b3ItPnZhbHVlLmluU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZGVsZXRlcykKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5kZWxldGVTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgfQogI2VuZGlm
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVC
eUlkVmFyaWFudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M3YWEwYzk3MzM3MThiMzdlNWQwOTdhZGRkMjEz
ZGQ2YTlmOGIyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9M
aXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0
ZUJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZXN1bHQs
CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCisgICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgLCBtX29s
ZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUpCisgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1
cmUpCisgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShp
ZGVudGlmaWVyKSkKK3sKKyAgICBBU1NFUlQob2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9vZmZz
ZXQgPT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUpOworICAg
IGVsc2UKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7Cit9CisKK0RlbGV0ZUJ5SWRWYXJp
YW50Ojp+RGVsZXRlQnlJZFZhcmlhbnQoKSB7IH0KKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0
ZUJ5SWRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICAqdGhp
cyA9IG90aGVyOworfQorCitEZWxldGVCeUlkVmFyaWFudCYgRGVsZXRlQnlJZFZhcmlhbnQ6Om9w
ZXJhdG9yPShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgbV9pZGVudGlm
aWVyID0gb3RoZXIubV9pZGVudGlmaWVyOworICAgIG1fcmVzdWx0ID0gb3RoZXIubV9yZXN1bHQ7
CisgICAgbV9vbGRTdHJ1Y3R1cmUgPSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAgICBtX25ld1N0
cnVjdHVyZSA9IG90aGVyLm1fbmV3U3RydWN0dXJlOworICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9v
ZmZzZXQ7CisgICAgcmV0dXJuICp0aGlzOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50Ojph
dHRlbXB0VG9NZXJnZShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgaWYg
KCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAobV9yZXN1bHQgIT0gb3RoZXIubV9yZXN1bHQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX2lkZW50aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBv
dGhlci5tX2lkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9v
ZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtX29sZFN0cnVjdHVyZSAhPSBvdGhlci5tX29sZFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIEFTU0VSVChtX25ld1N0cnVjdHVyZSA9PSBvdGhlci5tX25ld1N0cnVjdHVy
ZSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6d3Jp
dGVzU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhbmV3U3RydWN0dXJlKCk7Cit9
CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIG1faWRlbnRpZmllci52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30K
Kwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAgICAgICBtX29sZFN0cnVjdHVyZS0+
bWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBt
X25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlJ
ZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBkdW1wSW5Db250
ZXh0KG91dCwgMCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQo
UHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAoreworICAgIG91dC5wcmludCgi
PCIpOworICAgIG91dC5wcmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwgIicsIHJlc3VsdD0iLCBt
X3Jlc3VsdCk7CisgICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAgICAgICBvdXQucHJpbnQoIiwg
IiwgKm1fb2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG91
dC5wcmludCgiIC0+ICIsICptX25ld1N0cnVjdHVyZSk7CisgICAgb3V0LnByaW50KCIsIG9mZnNl
dCA9ICIsIG9mZnNldCgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeUlkVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
SWRWYXJpYW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjU5Mzk3NWMyODI3YzZhMDIzZTEyMmJjMWM5ZDM3M2Q3
NWI5ZGMwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeUlkVmFyaWFudC5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNh
Y2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1
ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZz
ZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIERlbGV0ZUJ5
U3RhdHVzOworc3RydWN0IER1bXBDb250ZXh0OworCitjbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGVsZXRlQnlJZFZh
cmlhbnQoCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LAorICAgICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdXRyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0KTsKKworICAgIH5EZWxldGVCeUlkVmFyaWFudCgpOworCisgICAgRGVsZXRlQnlJ
ZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKyAgICBEZWxldGVCeUlkVmFyaWFu
dCYgb3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQor
ICAgIGJvb2wgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKyAgICBib29sIHdy
aXRlc1N0cnVjdHVyZXMoKSBjb25zdDsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisKKyAgICBib29sIGlzUHJvcGVydHlVbnNldCgpIGNv
bnN0IHsgcmV0dXJuIG9mZnNldCgpID09IGludmFsaWRPZmZzZXQ7IH0KKworICAgIGJvb2wgYXR0
ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQg
dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJik7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2b2lk
IGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OworCisgICAg
Q2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhl
cikKKyAgICB7CisgICAgICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRp
ZmllcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobV9pZGVudGlmaWVy
KSB7CisgICAgICAgICAgICBpZiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG1fb2xkU3RydWN0dXJlID09IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgRGVsZXRlQnlTdGF0dXM7CisKKyAgICBib29sIG1fcmVzdWx0
OworICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0
cnVjdHVyZTsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKKyAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTBhY2Q2NzFhZTVjYmVkZDgxNzAwNzg0NjdlZWE2ZGNjMWMzZjRmNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAK
QEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIK
KworI2luY2x1ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSUNTdGF0
dXNVdGlscy5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1Njb3BlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk1vZHVsZU5hbWVz
cGFjZUFjY2Vzc0Nhc2UuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25h
bWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBHZXR0ZXJTZXR0ZXI7Cit9
CisKK2Jvb2wgRGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZh
cmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3Zh
cmlhbnRzLCB2YXJpYW50KTsKK30KKworRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNv
bXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBt
YXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKK3sKKyAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CisKKyAg
ICBEZWxldGVCeVN0YXR1cyByZXN1bHQ7CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICByZXN1
bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAg
bG9ja2VyLCBiYXNlbGluZUJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkp
LnN0dWJJbmZvKTsKKworICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNs
b3dWZXJzaW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9Q
QVJBTShkaWRFeGl0KTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjZW5kaWYK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorRGVsZXRlQnlTdGF0
dXM6OkRlbGV0ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5LCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCit7CisgICAgc3dpdGNoIChzdW1tYXJ5KSB7CisgICAgY2FzZSBTdHVi
SW5mb1N1bW1hcnk6Ok5vSW5mb3JtYXRpb246CisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0
aW9uOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlNpbXBsZToK
KyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6TWFrZXNDYWxsczoKKyAgICBjYXNlIFN0dWJJbmZv
U3VtbWFyeTo6VGFrZXNTbG93UGF0aEFuZE1ha2VzQ2FsbHM6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3Vt
bWFyeTo6VGFrZXNTbG93UGF0aDoKKyAgICAgICAgbV9zdGF0ZSA9IHN0dWJJbmZvLnRvb2tTbG93
UGF0aCA/IE9ic2VydmVkVGFrZXNTbG93UGF0aCA6IExpa2VseVRha2VzU2xvd1BhdGg7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
bG9jayogYmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBTdHViSW5m
b1N1bW1hcnkgc3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJsb2NrLT52bSgp
LCBzdHViSW5mbyk7CisgICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAgICAgIHJl
dHVybiBEZWxldGVCeVN0YXR1cyhzdW1tYXJ5LCAqc3R1YkluZm8pOworCisgICAgRGVsZXRlQnlT
dGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlOworICAgIHN3aXRjaCAo
c3R1YkluZm8tPmNhY2hlVHlwZSgpKSB7CisgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAg
ICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoTm9JbmZvcm1hdGlvbik7CisKKyAgICBjYXNlIENh
Y2hlVHlwZTo6U3R1YjogeworICAgICAgICBQb2x5bW9ycGhpY0FjY2VzcyogbGlzdCA9IHN0dWJJ
bmZvLT51LnN0dWI7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsaXN0SW5kZXggPSAwOyBsaXN0
SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7CisgICAgICAgICAgICBjb25zdCBB
Y2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5kZXgpOworICAgICAgICAgICAgaWYg
KGFjY2Vzcy52aWFQcm94eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1
cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworCisgICAgICAgICAgICBp
ZiAoYWNjZXNzLnVzZXNQb2x5UHJvdG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRl
QnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKworICAgICAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7CisgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlKTsKKworICAgICAgICAgICAgc3dpdGNoIChhY2Nlc3MudHlw
ZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6CisgICAgICAg
ICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAgICAg
ICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgYWNj
ZXNzLnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpEZWxldGVNaXNzID8gdHJ1ZSA6IGZhbHNlLCBzdHJ1
Y3R1cmUsIG51bGxwdHIsIGludmFsaWRPZmZzZXQpOworICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBE
ZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBBY2Nl
c3NDYXNlOjpEZWxldGU6IHsKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7
CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJl
bW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShz
dHJ1Y3R1cmUsIGFjY2Vzcy5pZGVudGlmaWVyKCkudWlkKCksIG9mZnNldCk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0KCkpOwor
ICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZv
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2
YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCksIHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
LCBhY2Nlc3Mub2Zmc2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5k
VmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3Rh
dHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lv
bihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0
YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhp
dEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNv
ZGVJbmRleCk7CisKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRT
dGFjaykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdp
bik7CisKKyAgICAgICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJl
c3VsdCkgLT4gRGVsZXRlQnlTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lu
bGluZWQoY29kZU9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNl
bGluZVJlc3VsdCA9IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAg
ICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJhc2VsaW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRp
ZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
OworCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5
U3RhdHVzIHJlc3VsdDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVG
ZWVkYmFjaygKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRD
b2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAg
ICAgIHJldHVybiBibGVzcygqc3RhdHVzLmRlbGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0
dXJuIGNvbXB1dGVGb3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNv
ZGVJbmRleCwgZGlkRXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVC
eVN0YXR1cyBEZWxldGVCeVN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChv
YnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZl
ZFRha2VzU2xvd1BhdGgpOworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Ns
b3dQYXRoKTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlT
dGF0dXMmIG90aGVyKQoreworICAgIGlmIChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAg
ICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisg
ICAgICAgICAgICAqdGhpcyA9IERlbGV0ZUJ5U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5
VGFrZXNTbG93UGF0aCk7CisgICAgfTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNh
c2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBTaW1wbGU6CisgICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3Rh
dGUpCisgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRv
JiBvdGhlclZhcmlhbnQgOiBvdGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFw
cGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VT
bG93KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtl
c1Nsb3dQYXRoOgorICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1
cm4gbWVyZ2VTbG93KCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYg
c2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFu
dCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9s
ZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgp
KQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKwordm9pZCBEZWxldGVCeVN0
YXR1czo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChE
ZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQu
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6Om1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlh
bnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZp
c2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIoIik7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7Cisg
ICAgY2FzZSBOb0luZm9ybWF0aW9uOgorICAgICAgICBvdXQucHJpbnQoIk5vSW5mb3JtYXRpb24i
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaW1wbGU6CisgICAgICAgIG91dC5wcmludCgi
U2ltcGxlIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoK
KyAgICAgICAgb3V0LnByaW50KCJMaWtlbHlUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIk9i
c2VydmVkVGFrZXNTbG93UGF0aCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgb3V0LnBy
aW50KCIsICIsIGxpc3REdW1wKG1fdmFyaWFudHMpLCAiKSIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0
dXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYmYwMDJkNDZmZTRjZGM2MzhhNzVjZmUyNGM4MjEyMGQ3NjMyMjE5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5U3RhdHVzLmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVP
cmlnaW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRl
QnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVz
TWFwLmgiCisjaW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBBY2Nlc3NDYXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1
YkluZm87CisKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAg
IC8vIEl0J3MgdW5jYWNoZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9J
bmZvcm1hdGlvbiwKKyAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4K
KyAgICAgICAgU2ltcGxlLAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93
IHBhdGguCisgICAgICAgIExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBi
ZWVuIHNlZW4gdG8gdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xv
d1BhdGgsCisgICAgfTsKKworICAgIERlbGV0ZUJ5U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRl
KE5vSW5mb3JtYXRpb24pCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3Rh
dHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAg
ICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlT
dGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBi
YXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9y
aWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKwor
ICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247
IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAg
Ym9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZl
ZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+
JiB2YXJpYW50cygpIHsgcmV0dXJuIG1fdmFyaWFudHM7IH0KKworICAgIERlbGV0ZUJ5U3RhdHVz
IHNsb3dWZXJzaW9uKCkgY29uc3Q7CisKKyAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNl
dCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJl
IGFwcHJveGltYXRlLgorICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisg
ICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hl
YXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJikgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisK
KyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJik7
CisgICAgdm9pZCBtZXJnZShjb25zdCBEZWxldGVCeVN0YXR1cyYpOworCisgICAgc3RhdGljIERl
bGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JCYXNlbGluZShDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYs
IEJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyBE
ZWxldGVCeVN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygK
KyAgICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyopOworI2VuZGlmCisKKyAgICBWZWN0b3I8RGVsZXRlQnlJ
ZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CisgICAgU3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lDU3RhdHVzTWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNN
YXAuaAppbmRleCBkYmQ1YTg4MjMxMjQyMmQ0ZThiMmVkZDNiNzk4MjJjNzY3YTdiYmM4Li5mMDMx
OTAxMTVhM2I4ZTQyYjRlYjhiODc0MDNhZjJkODRlMDM3NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBD
b2RlQmxvY2s7CiBjbGFzcyBHZXRCeVN0YXR1czsKIGNsYXNzIEluQnlJZFN0YXR1czsKIGNsYXNz
IFB1dEJ5SWRTdGF0dXM7CitjbGFzcyBEZWxldGVCeVN0YXR1czsKIGNsYXNzIFN0cnVjdHVyZVN0
dWJJbmZvOwogc3RydWN0IEJ5VmFsSW5mbzsKIApAQCAtNDgsNiArNDksNyBAQCBzdHJ1Y3QgSUNT
dGF0dXMgewogICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAgSW5C
eUlkU3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsKICAgICBQdXRCeUlkU3RhdHVzKiBwdXRT
dGF0dXMgeyBudWxscHRyIH07CisgICAgRGVsZXRlQnlTdGF0dXMqIGRlbGV0ZVN0YXR1cyB7IG51
bGxwdHIgfTsKIH07CiAKIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBJQ1N0YXR1cywgQ29k
ZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gSUNTdGF0dXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggYzk0ODRiNDg1
YWRmZTZkYWI0Y2NmMmI3YWE2NDViZjc4ODk4MDgzMi4uZDYxNWExM2Q5YzNjNDc1YTYxNmMyZTU0
NzcyOTU1NDYxNjljNDQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcApAQCAtMzQsNiArMzQsNyBAQCBSZWNvcmRlZFN0YXR1
c2VzJiBSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0oUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVy
KQogICAgIGdldHMgPSBXVEZNb3ZlKG90aGVyLmdldHMpOwogICAgIHB1dHMgPSBXVEZNb3ZlKG90
aGVyLnB1dHMpOwogICAgIGlucyA9IFdURk1vdmUob3RoZXIuaW5zKTsKKyAgICBkZWxldGVzID0g
V1RGTW92ZShvdGhlci5kZWxldGVzKTsKICAgICBzaHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiAq
dGhpczsKIH0KQEAgLTc1LDEwICs3NiwyMCBAQCBJbkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVz
ZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjbwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK0RlbGV0ZUJ5U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjph
ZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBEZWxl
dGVCeVN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxE
ZWxldGVCeVN0YXR1cz4oc3RhdHVzKTsKKyAgICBEZWxldGVCeVN0YXR1cyogcmVzdWx0ID0gc3Rh
dHVzUHRyLmdldCgpOworICAgIGRlbGV0ZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmln
aW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQg
UmVjb3JkZWRTdGF0dXNlczo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9y
KQogewogICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT52
aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogZGVsZXRl
cykKKyAgICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKIH0K
IAogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZp
c2l0b3IpCkBAIC04OSw2ICsxMDAsOCBAQCB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJ
ZkNoZWFwKHNsb3RWaXNpdG9yKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbnMpCiAgICAgICAg
IHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBw
YWlyIDogZGVsZXRlcykKKyAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNp
dG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGlu
ZyhWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaAppbmRleCBiMzU1ZTliNjIzMzg0NjI5MjY0ODJjN2MxYjkxZjQyMWZmZTYyMGQw
Li45ZTcwNTVkMjQzZjI0YWE2YWY1YWEwOTJhZDMwMmVmMTVhOGQwNTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNp
bmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5j
bHVkZSAiSW5CeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgpAQCAtNDcs
NiArNDgsNyBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgR2V0QnlTdGF0dXMqIGFk
ZEdldEJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBHZXRCeVN0YXR1cyYpOwogICAg
IFB1dEJ5SWRTdGF0dXMqIGFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmKTsKICAgICBJbkJ5SWRTdGF0dXMqIGFkZEluQnlJZFN0YXR1cyhjb25z
dCBDb2RlT3JpZ2luJiwgY29uc3QgSW5CeUlkU3RhdHVzJik7CisgICAgRGVsZXRlQnlTdGF0dXMq
IGFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBEZWxldGVCeVN0YXR1
cyYpOwogICAgIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKICAgICB2
b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CkBAIC02MywxMiArNjUsMTQgQEAgc3RydWN0
IFJlY29yZGVkU3RhdHVzZXMgewogICAgICAgICBmdW5jKGdldHMpOwogICAgICAgICBmdW5jKHB1
dHMpOwogICAgICAgICBmdW5jKGlucyk7CisgICAgICAgIGZ1bmMoZGVsZXRlcyk7CiAgICAgfQog
ICAgIAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENh
bGxMaW5rU3RhdHVzPj4+IGNhbGxzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPEdldEJ5U3RhdHVzPj4+IGdldHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRzOwogICAg
IFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEluQnlJZFN0YXR1
cz4+PiBpbnM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9w
dHI8RGVsZXRlQnlTdGF0dXM+Pj4gZGVsZXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IGU5NTgwMGFmZjI2Nzk1YTQyZDk0NjM5NGNiZGU1MzA5Njg4
Y2RjNDYuLjIxZjAwM2ExOTBlNWNjYmJkZmEwNjg0NWMwNmVjNjIxNTc3NmE0MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTM3MDksNiArMzcwOSw0MSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorCisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OiB7CisgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAgICBUcmFuc2l0aW9uVmVjdG9yIHRyYW5z
aXRpb25zOworCisgICAgICAgIC8vIE9yZGluYXJpbHkgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCB3
aXRoIGNhbGxpbmcgc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKCkKKyAgICAgICAgLy8gYmVj
YXVzZSBvZiB0aGUgZWZmZWN0IG9uIGNvbXBpbGUgdGltZXMsIGJ1dCB0aGlzIG5vZGUgaXMgRlRM
LW9ubHkuCisgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUp
OworCisgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
OworCisgICAgICAgIGlmIChub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0
cnVjdHVyZXMoKSkKKyAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyU3RydWN0dXJlcygpOworCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCku
dmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBjb25zdCBEZWxldGVCeUlkVmFy
aWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHNb
aV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHRoaXNTZXQgPSAqbV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICB0
aGlzU2V0LmZpbHRlcihiYXNlKTsKKyAgICAgICAgICAgIGlmICh0aGlzU2V0LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3
U3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0
cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAorICAgICAgICAgICAgICAg
ICAgICBUcmFuc2l0aW9uKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1
Y3R1cmUoKSksIG5ld1N0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgIG5ld1NldC5hZGQobmV3
U3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG5ld1NldC5t
ZXJnZSh0aGlzU2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIG9ic2VydmVUcmFuc2l0aW9ucyhj
bG9iYmVyTGltaXQsIHRyYW5zaXRpb25zKTsKKyAgICAgICAgaWYgKGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLmNoYW5nZVN0cnVjdHVyZShtX2dyYXBoLCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24p
CisgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgR2V0RXhlY3V0YWJsZTogewogICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKQEAgLTQxMDYsNiAr
NDE0MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIENsZWFy
Q2F0Y2hMb2NhbHM6CiAgICAgICAgIGJyZWFrOwogCkBAIC00Mjg3LDYgKzQzMjMsMTMgQEAgdm9p
ZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBGaWx0ZXJEZWxl
dGVCeVN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkK
KyAgICAgICAgICAgIG5vZGUtPmRlbGV0ZUJ5U3RhdHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVj
dHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVm
YXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA1M2IwMTQ4M2VkNDE0OTA4NDg3NTFkZGIzMzY5
ZDIxNmJjYjVkNWM4Li5iZTY3MTIxY2UzMTM4NWRmZDk1ZTdkYjQxODliZDhjY2Y3ODk4ODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTQwNyw2ICs0MDcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5
T3JFbXB0eToKQEAgLTEyNjYsNyArMTI2Nyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKLSAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czogeworICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VsaW1pbmF0ZWRBbGxv
Y2F0aW9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMWZh
MGIzMTc4NzcyZWZmOWRmNDRiYzU4ZGVmODFiYzlkMmYxYjFkLi42YWRkMjEwYTY2MjYxMjZkZWM2
YTYwMzVmNzQwNDY3MzdiZDNmNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkRGR0Ns
b2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdK
SVRDb2RlLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIKICNpbmNsdWRlICJGdW5jdGlv
bkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCkBAIC0yNDgsNiArMjQ5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZVB1
dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5v
ZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCwg
dW5zaWduZWQgaW50cnVjdGlvblNpemUpOworCisgICAgdm9pZCBoYW5kbGVEZWxldGVCeUlkKAor
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzKTsKICAgICAKICAgICAvLyBFaXRoZXIg
cmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24u
IFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciBob2xkcywg
YW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBiZSBlbWl0dGVkLgpAQCAtNDYx
Myw2ICs0NjE3LDgyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAg
ICAgIGdldHRlciwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgcmVnaXN0ZXJPZmZzZXQsICp2YXJp
YW50LmNhbGxMaW5rU3RhdHVzKCksIHByZWRpY3Rpb24pOwogfQogCit2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVEZWxldGVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwg
Tm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBEZWxldGVCeVN0YXR1
cyBkZWxldGVCeVN0YXR1cykKK3sKKyAgICBpZiAoIWRlbGV0ZUJ5U3RhdHVzLmlzU2ltcGxlKCkg
fHwgIWRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpIHx8ICFPcHRpb25zOjp1c2VBY2Nl
c3NJbmxpbmluZygpKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVsZXRlQnlTdGF0dXMudmFyaWFudHMo
KS5zaXplKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKQorICAg
ICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAg
ICAgICAgICAgfHwgZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPiBPcHRpb25zOjpt
YXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgc2V0
KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJ
bmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBPcEluZm8o
bV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVzKGN1cnJl
bnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2UpOworCisgICAgICAgIGZvciAo
Y29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1cy52YXJpYW50
cygpKSB7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xk
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpCisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhKiBk
YXRhID0gbV9ncmFwaC5tX211bHRpRGVsZXRlQnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBk
YXRhLT52YXJpYW50cyA9IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAgIGRhdGEt
PmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICBzZXQoZGVzdGlu
YXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpRGVsZXRlQnlPZmZzZXQsIE9wSW5m
byhkYXRhKSwgYmFzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGRl
bGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpID09IDEpOworICAgIERlbGV0ZUJ5SWRWYXJp
YW50IHZhcmlhbnQgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpWzBdOworCisgICAgaWYgKCF2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyRGVsZXRl
QnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkRGVs
ZXRlQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwgYmFzZSk7
CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAgICBzZXQo
ZGVzdGluYXRpb24sIGpzQ29uc3RhbnQoanNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5
U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2UpOworICAg
IGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgIEFTU0VSVCh2YXJpYW50Lm9s
ZFN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgp
KTsKKyAgICBBU1NFUlQodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgQVNTRVJUKGlzVmFs
aWRPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworCisgICAgTm9kZSogcHJvcGVydHlTdG9yYWdl
OworICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRk
KAorICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJl
KCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsK
KworICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAgcHJv
cGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICBlbHNlCisgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9
IGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKTsKKworICAgIFN0b3JhZ2VBY2Nlc3NEYXRh
KiBkYXRhID0gbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgIGRhdGEtPm9m
ZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlk
ZW50aWZpZXJOdW1iZXI7CisKKyAgICBhZGRUb0dyYXBoKAorICAgICAgICBQdXRCeU9mZnNldCwK
KyAgICAgICAgT3BJbmZvKGRhdGEpLAorICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UsCisgICAgICAg
IGJhc2UsCisgICAgICAgIGpzQ29uc3RhbnQoSlNWYWx1ZSgpKSk7CisKKyAgICBhZGRUb0dyYXBo
KFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICBzZXQoZGVzdGlu
YXRpb24sIGpzQ29uc3RhbnQoanNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKSk7CisgICAgcmV0
dXJuOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKICAgICBOb2RlKiBi
YXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJ
ZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKIHsKQEAgLTU5NDMsNyArNjAy
MywxMSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxC
eUlkPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwog
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3At
Pm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVy
TnVtYmVyKSwgYmFzZSkpOworICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0
dXMgPSBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICBj
dXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNv
ZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiMjMxOGZlMDNhZWQ0MWUwMzA5
NTg3ZTdkZjkwNzY5Y2IwNGUzYzQ5Li43MDk0M2UwNWVkMjljMmM5OTExOTdhNWUyYmM1MmYyNmY2
YmI4NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
NDczLDYgKzQ3Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBGaWx0ZXJH
ZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAg
d3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTEyODQsNiAr
MTI4NSwxNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYXNl
IE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQp
OworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7CisgICAgICAgIEFic3RyYWN0SGVh
cCBoZWFwKE5hbWVkUHJvcGVydGllcywgbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS5p
ZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgd3JpdGUoaGVhcCk7CisgICAgICAgIGlmIChub2Rl
LT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0cnVjdHVyZXMoKSkKKyAgICAgICAg
ICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24o
TmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShncmFwaC5m
cmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgICAg
ICAKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIgPSBub2RlLT5zdG9yYWdlQWNjZXNzRGF0YSgpLmlkZW50aWZpZXJOdW1iZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmlu
ZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhkMmJmMDZkZWIuLmYxNzQ1ZWNhYTAx
NWE5NmRlYmYwZGMxYTliYWE5MjgxMjFkMzk2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04Niw2ICs4Niw3IEBAIGJv
b2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
RmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAg
ICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9i
c2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFw
cyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBi
dXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI0
M2Y3Y2Y1NGUxMjE3NDcxNzZkZGNlOTY1YjZjODE4ZjI5MTYxODUuLjBkMWYyMDJhMDhiZTYyMTBm
NDE1OTRlMzdhMWMyYTA2YmQ3MTVhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC01MDksNiArNTA5LDM2IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVC
eU9mZnNldDogeworICAgICAgICAgICAgICAgIEVkZ2UgYmFzZUVkZ2UgPSBub2RlLT5jaGlsZDEo
KTsKKyAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gYmFzZUVkZ2Uubm9kZSgpOworICAgICAg
ICAgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbm9kZS0+bXVsdGlEZWxl
dGVCeU9mZnNldERhdGEoKTsKKworICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZh
bHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2UpOworCisgICAgICAgICAgICAgICAgbV9pbnRlcnBy
ZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFm
dGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgorICAgICAgICAgICAgICAgIGFscmVhZHlIYW5k
bGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRv
IGRvIHRoaW5ncyB0byB0aGlzLgorCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAg
RGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworCisgICAgICAg
ICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLnZhcmlhbnRzW2ktLV0gPSBkYXRhLnZhcmlhbnRzLmxhc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGEudmFyaWFudHMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChkYXRhLnZhcmlhbnRzLnNpemUoKSAhPSAxKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVtaXREZWxldGVCeU9mZnNldCgKKyAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIGRhdGEudmFyaWFudHNb
MF0sIGRhdGEuaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7CiAgICAgICAgICAgICAgICAg
RWRnZSBiYXNlRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwpAQCAtMTMwOCw2ICsxMzM4LDQ1IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlKTsKICAgICAgICAgfQogICAgIH0KKwor
ICAgIHZvaWQgZW1pdERlbGV0ZUJ5T2Zmc2V0KHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSog
bm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBEZWxldGVCeUlkVmFy
aWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKKyAgICB7CisgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBhZGRCYXNlQ2hlY2so
aW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICBub2RlLT5jaGlsZDEoKS5zZXRVc2VL
aW5kKEtub3duQ2VsbFVzZSk7CisKKyAgICAgICAgaWYgKCF2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
KSB7CisgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVh
bih2YXJpYW50LnJlc3VsdCgpKSk7CisgICAgICAgICAgICBub2RlLT5vcmlnaW4uZXhpdE9LID0g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBUcmFuc2l0
aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAg
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAg
IEVkZ2UgcHJvcGVydHlTdG9yYWdlOworCisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9k
ZSwgb3JpZ2luLmV4aXRPSyk7CisKKyAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQu
b2Zmc2V0KCkpKQorICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gbm9kZS0+Y2hpbGQxKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UobV9pbnNl
cnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBHZXRCdXR0ZXJmbHksIG9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkpKTsKKworICAgICAgICBT
dG9yYWdlQWNjZXNzRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRk
KCk7CisgICAgICAgIGRhdGEub2Zmc2V0ID0gdmFyaWFudC5vZmZzZXQoKTsKKyAgICAgICAgZGF0
YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKworICAgICAgICBOb2RlKiBj
bGVhclZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBKU0NvbnN0YW50LCBvcmlnaW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZVN0cm9uZyhKU1Zh
bHVlKCkpKSk7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQdXRCeU9mZnNldCwgb3JpZ2luLndpdGhJbnZhbGlk
RXhpdCgpLCBPcEluZm8oJmRhdGEpLCBwcm9wZXJ0eVN0b3JhZ2UsIG5vZGUtPmNoaWxkMSgpLCBF
ZGdlKGNsZWFyVmFsdWUpKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAg
ICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFB1dFN0cnVjdHVyZSwgb3JpZ2luLndp
dGhJbnZhbGlkRXhpdCgpLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAgICBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29s
ZWFuKHZhcmlhbnQucmVzdWx0KCkpKTsKKyAgICAgICAgbm9kZS0+b3JpZ2luLmV4aXRPSyA9IGZh
bHNlOworICAgIH0KICAgICAKICAgICB2b2lkIGFkZEJhc2VDaGVjaygKICAgICAgICAgdW5zaWdu
ZWQgaW5kZXhJbkJsb2NrLCBOb2RlKiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFs
dWUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjZjhmYTJlZmJhMzdmOTZkYzkwOTlkNDk3MjUxODEu
LjkyYzAzOGYwNTkwMmVlOGMzMTBjNWExMTNkNjQ5NWQwNTA1MTBjZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CiAgICAg
Y2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgorICAg
IGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2Ug
RG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0yNDUsNiArMjQ2LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBEYXRlR2V0
SW50MzJPck5hTjoKICAgICBjYXNlIERhdGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJ
bnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBl
OTdkZTEwZjZmNGNkYzE1YmFlZmIxMGI3ZWM2MDYyODI3ODM1OTU1Li4xNDJkNzhiOGM0MzY4MWZj
MzNmZmYzMGI2ZTliOGQyOGRiODk5ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKQEAgLTE4MTUsNiArMTgxNSwxMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogIHsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE1hdGNoU3RydWN0
dXJlOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSW50cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRj
aFN0cnVjdHVyZSB0aGF0IGRvZXNuJ3QgZG8gYSBjZWxsIGNoZWNrLgpAQCAtMjU4MCw2ICsyNTg1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1
czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBJbnZh
bGlkYXRpb25Qb2ludDoKICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5k
ZXggNjllMjkwMGFlZGQ2OWQyNDU1ZjI1MTQzMzJmY2Q5NDU3NThlMWIwZi4uYWYyODI2NzNlNDVj
MjcxZWY4NTNkOWMyMmViZjlhYTcxNjNlNWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKQEAgLTMwMiw2ICszMDIsMTIgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250ZXgK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLnZhcmlhbnRz
W2ldLCBjb250ZXh0KSk7CiAgICAgfQorICAgIGlmIChub2RlLT5oYXNNdWx0aURlbGV0ZUJ5T2Zm
c2V0RGF0YSgpKSB7CisgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbm9k
ZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
aWQiLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsICJ7IiwgaWRlbnRpZmllcnMoKVtkYXRhLmlkZW50
aWZpZXJOdW1iZXJdLCAifSIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0
YS52YXJpYW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5D
b250ZXh0KGRhdGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKKyAgICB9CiAgICAgaWYgKG5vZGUt
Pmhhc01hdGNoU3RydWN0dXJlRGF0YSgpKSB7CiAgICAgICAgIGZvciAoTWF0Y2hTdHJ1Y3R1cmVW
YXJpYW50JiB2YXJpYW50IDogbm9kZS0+bWF0Y2hTdHJ1Y3R1cmVEYXRhKCkudmFyaWFudHMpCiAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqdmFyaWFudC5zdHJ1Y3R1cmUu
Z2V0KCksIGNvbnRleHQpLCAiPT4iLCB2YXJpYW50LnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKaW5kZXggOTQ3ZWZhYWJhOWU2NDk2YjNiMDVjNmY1NTE0MmFiN2M3N2I1
YjVhMi4uMmMyNTE5NmZiMDVjNDk3Nzk0YjVkZGZjNjYxZGM3N2ZmMWEwZTBhYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTEwMCw2ICsxMTAwLDcgQEAgcHVibGljOgog
ICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZz
ZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0
RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKKyAgICBCYWc8TXVsdGlEZWxldGVCeU9mZnNl
dERhdGE+IG1fbXVsdGlEZWxldGVCeU9mZnNldERhdGE7CiAgICAgQmFnPE1hdGNoU3RydWN0dXJl
RGF0YT4gbV9tYXRjaFN0cnVjdHVyZURhdGE7CiAgICAgQmFnPE9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGE+IG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTsKICAgICBCYWc8Q2FsbFZhcmFyZ3NE
YXRhPiBtX2NhbGxWYXJhcmdzRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxNTUzYjE5YWY1MTM0NDJjMDNlYmVlYzA0ODBmMmIuLjFj
Y2E4YjJhYzQxY2JlN2Y0OTZkM2M5NmE3YjhkZDEwMDAyZDU4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTA5LDYgKzEwOSw3IEBAIEV4aXRNb2RlIG1h
eUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAg
ICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZGNiMmI1OWRjYWNiYjIxOTNhODJhMGI5NzMzMzk5ZjA1
NzQyYTQzOC4uZjczYWY2MDAxMWMxNTAxZDA4MGIxZWUwNmJjN2IwYWE2NWMzNmQxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCkBAIC01Nyw2ICs1NywxNSBAQCBib29sIE11
bHRpUHV0QnlPZmZzZXREYXRhOjpyZWFsbG9jYXRlc1N0b3JhZ2UoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorYm9vbCBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YTo6d3JpdGVzU3RydWN0
dXJlcygpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gdmFyaWFudHMuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgIGlmICh2YXJpYW50c1tpXS53cml0ZXNTdHJ1Y3R1cmVzKCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lk
IEJyYW5jaFRhcmdldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICgh
YmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEzNDU1YjVjMjlmMDcw
ZmVmMmY5OTE5NTJiY2ZmMDA3ZmVhOTE3MjYuLjA5ODZmOWE3MWZjYzE3OTg3NTdmNGFlZWRkOWFi
NDYyOTFjOGY0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC00Nyw2ICs0
Nyw3IEBACiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQu
aCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKKyNpbmNsdWRlICJEZWxldGVC
eUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlND
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCkBAIC05Miw2ICs5MywxMyBAQCBzdHJ1
Y3QgTXVsdGlQdXRCeU9mZnNldERhdGEgewogICAgIGJvb2wgcmVhbGxvY2F0ZXNTdG9yYWdlKCkg
Y29uc3Q7CiB9OwogCitzdHJ1Y3QgTXVsdGlEZWxldGVCeU9mZnNldERhdGEgeworICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXI7CisgICAgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAyPiB2
YXJpYW50czsKKworICAgIGJvb2wgd3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OworfTsKKwogc3Ry
dWN0IE1hdGNoU3RydWN0dXJlVmFyaWFudCB7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmU7CiAgICAgYm9vbCByZXN1bHQ7CkBAIC0yMDE0LDYgKzIwMjIsMTcgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoaGFzTXVsdGlQdXRCeU9mZnNldERhdGEoKSk7CiAgICAgICAgIHJldHVy
biAqbV9vcEluZm8uYXM8TXVsdGlQdXRCeU9mZnNldERhdGEqPigpOwogICAgIH0KKworICAgIGJv
b2wgaGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9w
KCkgPT0gTXVsdGlEZWxldGVCeU9mZnNldDsKKyAgICB9CisKKyAgICBNdWx0aURlbGV0ZUJ5T2Zm
c2V0RGF0YSYgbXVsdGlEZWxldGVCeU9mZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGhhc011bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkpOworICAgICAgICByZXR1cm4gKm1fb3BJbmZv
LmFzPE11bHRpRGVsZXRlQnlPZmZzZXREYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBo
YXNNYXRjaFN0cnVjdHVyZURhdGEoKQogICAgIHsKQEAgLTI5NzYsNiArMjk5NSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKICAgICB9
CiAKKyAgICBib29sIGhhc0RlbGV0ZUJ5U3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBv
cCgpID09IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOworICAgIH0KKworICAgIERlbGV0ZUJ5U3RhdHVz
KiBkZWxldGVCeVN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzRGVsZXRlQnlTdGF0
dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxEZWxldGVCeVN0YXR1cyo+KCk7Cisg
ICAgfQorCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRTdHJlYW0mIG91dCkKICAgICB7CiAg
ICAgICAgIGlmICghY2hpbGQxKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKaW5kZXggZTIxMWVhNzdkODU0MTk5YmI4NDYzZmFlYzM3YmY1YzQxYzVmOTdlNy4uZDEzNjcw
MWU3Yjc2NmY0NjgwMzM5YjAxNTE2ZmYwZmQxZTBjNDc3MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjUyLDYgKzI1Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aUdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwK
ICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3Jv
KEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKQEAgLTUyNiw2ICs1
MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmlsdGVy
R2V0QnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRT
dGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVz
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyRGVsZXRlQnlTdGF0dXMsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwKICAgICBtYWNy
byhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgLyogVGhl
IGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBiZWNhdXNlIHRoZXkgZG8gYm91bmRzIGNo
ZWNrcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVSZXN1bHREb3VibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDA1YWNk
ZjIzODc2OTczZjg4ZTgyYjlhNzNiMzQ5ZWU3NzliNWI5ODQuLmQwMGVhNjFlYTI5NWQxNjcwM2Y1
NjY1NjhmYWU5OTcxNjUxYTExOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtMTIy
MCw2ICsxMjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoK
ICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNTcwLDYgKzI1NzEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0
dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9tQWxs
b2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91dENo
ZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggMjg4ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uOGYxOTI2MDgw
NTY2OTQ3YmFiYTAyZjE3NzZiNTQwOTRiMTBlMGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTk4NCw2ICs5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIGNhc2UgRGVs
ZXRlQnlWYWw6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBNdWx0aURl
bGV0ZUJ5T2Zmc2V0OgogICAgICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgICAgIGNhc2UgQ29t
cGFyZUxlc3M6CiAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKQEAgLTEzOTUsNiArMTM5Niw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6
CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgQ2xlYXJD
YXRjaExvY2FsczoKICAgICAgICAgY2FzZSBEYXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJbnZh
bGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRlNjAxYTBjN2ZjOTY2NGI1NWVhYy4uZDZl
N2M5ZTMwODU3MjI0YzgyNTg1NjgyY2FiNmQwN2FlN2QxZTE2YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhl
c2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhhbiB3aGVyZSB3ZSBwdXQgdGhlbSwgc2lu
Y2Ugd2Ugd2FudCB0aGVtCiAgICAgICAgIC8vIHRvIGNhcHR1cmUgInByb2ZpbGluZyIgYXQgdGhl
IHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1c2VyIHB1dCB0aGVtLgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02MDgsNiArNjA5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
ICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAg
Y2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAg
ICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6CiAgICAgY2FzZSBIYXNHZW5lcmljUHJvcGVydHk6
CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGIwMTlkODVkZjlj
MjViMTMwODk5MmFlNjQ3YjVlYzhhMjc1M2JjNjYuLmZkYzliYmUzMmE1MjFmODc5OTU5NDI2MmUz
NjBkMGMzOGU1N2I3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDE5MCw2ICs0MTkwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTQyMDgsNiArNDIwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0
QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxl
dGVCeU9mZnNldDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVl
OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGIwN2NiMjU3NWQxMDYyNzc4ZDRl
YjA3NGRmYzVmYTYxNjYzZGQ5NjAuLmYwMDNhMDhjMmNhMWVhZTRlM2FhNDFmNjE3MTIxODEyMjUx
ZjA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcApAQCAtNTI1NSw2ICs1MjU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNT
dGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTUyNjksNiArNTI3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAg
Y2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAg
ICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRv
bVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggN2M3YWJlODNlMjNhNWQ4OGEzMjA4M2E1MGVkZjM0
ZDM2Y2Q2MzY5Yi4uOTJkMGM4ZjFjNDU2MzczOTBjMDYzNGE4MTU4MjQyODVlOTdhM2ViMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwCkBAIC0yODcsNiArMjg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0Ogog
ICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICAgICAgICAgICAgICBj
YXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNv
dW50IHRoZXNlIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAKQEAgLTM2Miw2ICszNjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAg
ICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2Ug
TXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQg
dGhlc2UgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAzYTc3
NzExNDVjNzYwYjM0ODJlN2UxYWM5YjY0OTkwMWRmZjE5ZDVhLi4wZDY1ZDhmODlhZWMzZDU5NDJk
MmNmODNkNmNlZDhhMWJmZjM5OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcApAQCAtMzExLDYgKzMxMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRp
b24oKS0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zm
c2V0OgorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aURl
bGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0
aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoKG5vZGUpLCAhdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSB8fCAhdmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKS0+ZGZnU2hvdWxkV2F0Y2goKSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIG9ubHkgc3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFs
T2JqZWN0IG9yIEpTQXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCA3NGVhNjE4ZTkwMTEyOWE1N2Uy
YzgzYmI4OTJhNzViN2I4MDYzM2I3Li4wYzM1YTUzNjVjYzQ2ZWYzYzc4OTk0OGY0ZDJlNjBjY2Yw
MTc2Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFy
YXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0
ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgor
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDogewpAQCAtMzk5LDYgKzQwMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAg
ICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgog
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS5ub2RlKCkgPT0gY2FuZGlkYXRlKQog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKaW5kZXggNWM2OWQxZDM4YzFjNjEwNTk5ZmQzMDI5OTczNDM2MGNiMjI3YWNiMi4uZTFmNTg5
ZjI3MzQzYmZmOTM2MjE2MTg4ZGFlM2I1Yzg2MzY4NjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjMzLDYgKzIzMyw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVG9UaGlz
OgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6
CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVG9QcmltaXRpdmU6CiAg
ICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2UgVGhyb3c6CkBAIC0zOTIsNiArMzkzLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAg
Y2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2Ug
Q3JlYXRlR2VuZXJhdG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCmluZGV4IDgwMzYzOTA3YjllMTcyODMyNzViMjdhNjk1MzMxOGRjNGU2N2I1OWIu
LjRlZmRlOGY2YzA5YWY3ZDRmNGNiZjZhMGE2MWNmMjAyYTJjZWUzOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTExNzcsNiArMTE3Nyw5
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICAgICAgICAg
IGNvbXBpbGVNdWx0aVB1dEJ5T2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgorICAgICAgICAgICAgY29tcGlsZU11bHRpRGVsZXRl
QnlPZmZzZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1hdGNoU3RydWN0
dXJlOgogICAgICAgICAgICAgY29tcGlsZU1hdGNoU3RydWN0dXJlKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE1NjksNiArMTU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAg
Y2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0
dXM6CiAgICAgICAgICAgICBjb21waWxlRmlsdGVySUNTdGF0dXMoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIERhdGVHZXRJbnQzMk9yTmFOOgpAQCAtODExOCw2ICs4MTIyLDEw
NiBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlTXVsdGlEZWxldGVCeU9m
ZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbV9ub2RlLT5t
dWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpOworCisgICAgICAgIGludCBtaXNzQ29uZmlndXJhYmxl
ID0gMDsKKyAgICAgICAgaW50IG1pc3NOb25jb25maWd1cmFibGUgPSAwOworCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAg
ICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAg
ICAgIGlmICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIGlmICh2
YXJpYW50LnJlc3VsdCgpKQorICAgICAgICAgICAgICAgICAgICArK21pc3NDb25maWd1cmFibGU7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICArK21pc3NOb25jb25m
aWd1cmFibGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgdW5pcXVl
Q2FzZUNvdW50ID0gZGF0YS52YXJpYW50cy5zaXplKCk7CisgICAgICAgIGlmIChtaXNzQ29uZmln
dXJhYmxlKQorICAgICAgICAgICAgdW5pcXVlQ2FzZUNvdW50IC09IG1pc3NDb25maWd1cmFibGUg
LSAxOworICAgICAgICBpZiAobWlzc05vbmNvbmZpZ3VyYWJsZSkKKyAgICAgICAgICAgIHVuaXF1
ZUNhc2VDb3VudCAtPSBtaXNzTm9uY29uZmlndXJhYmxlIC0gMTsKKyAgICAgICAgaW50IHRydWVC
bG9jayA9IG1pc3NDb25maWd1cmFibGUgPyB1bmlxdWVDYXNlQ291bnQgLSAxIDogLTE7CisgICAg
ICAgIGludCBmYWxzZUJsb2NrID0gbWlzc05vbmNvbmZpZ3VyYWJsZSA/IHVuaXF1ZUNhc2VDb3Vu
dCAtIDEgLSAhIW1pc3NDb25maWd1cmFibGUgOiAtMTsKKworICAgICAgICBWZWN0b3I8TEJhc2lj
QmxvY2ssIDI+IGJsb2Nrcyh1bmlxdWVDYXNlQ291bnQpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBibG9ja3Muc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgYmxvY2tzW2ldID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZXhpdCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDI+IGNhc2VzOworICAgICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFy
aWFudHMuc2l6ZSgpLCBibG9jayA9IDA7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5SWRW
YXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQu
b2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsKKyAg
ICAgICAgICAgIGlmICh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIGNh
c2VzLmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3Nb
YmxvY2srK10sIFdlaWdodCgxKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9j
a3NbdmFyaWFudC5yZXN1bHQoKSA/IHRydWVCbG9jayA6IGZhbHNlQmxvY2tdLCBXZWlnaHQoMSkp
KTsKKyAgICAgICAgfQorICAgICAgICBib29sIHN0cnVjdHVyZXNDaGVja2VkID0gbV9pbnRlcnBy
ZXRlci5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoYmFz
ZVNldCk7CisgICAgICAgIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zmc2V0KGJhc2UsIHN0cnVjdHVy
ZXNDaGVja2VkLCBjYXNlcywgZXhpdCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5tX25leHRCbG9jazsKKworICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDI+
IHJlc3VsdHM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXpl
KCksIGJsb2NrID0gMDsgaS0tOykgeworICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFy
aWFudCA9IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBpZiAoIXZhcmlhbnQubmV3U3Ry
dWN0dXJlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGJsb2Nrc1tibG9ja10sIGJsb2NrICsgMSA8IGJsb2Nrcy5zaXplKCkgPyBibG9j
a3NbYmxvY2sgKyAxXSA6IGV4aXQpOworCisgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlOworCisgICAgICAgICAg
ICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAg
ICAgICAgICBzdG9yYWdlID0gYmFzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2UgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNPYmplY3Rf
YnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkobV9vdXQuaW50NjRa
ZXJvLCBzdG9yYWdlLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQub2Zmc2V0KCkpOwor
CisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxp
bmVUeXBlRmxhZ3MoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGlu
ZVR5cGVGbGFncygpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkpOworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoCisgICAgICAgICAg
ICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Io
dmFyaWFudC5yZXN1bHQoKSA/IG1fb3V0LmludFB0ck9uZSA6IG1fb3V0LmludFB0clplcm8pKTsK
KyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICsrYmxv
Y2s7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWlzc05vbmNvbmZpZ3VyYWJsZSkgeworICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW2ZhbHNlQmxvY2tdKTsKKyAgICAgICAgICAg
IHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5pbnRQdHJaZXJvKSk7CisgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bWlzc0NvbmZpZ3VyYWJsZSkgeworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW3Ry
dWVCbG9ja10sIGV4aXQpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9y
KG1fb3V0LmludFB0ck9uZSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZXhpdCwgY29udGludWF0aW9u
KTsKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmVzQ2hlY2tlZCkKKyAgICAgICAgICAgIHNwZWN1bGF0
ZShCYWRDYWNoZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5ib29sZWFuVHJ1ZSk7CisgICAg
ICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDY0LCBy
ZXN1bHRzKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXgg
NDVmNDIzNmExYmI3NzRlYmI1MjMwNzcyNmU3ZWZkZmU4NGJhZDEwMS4uZjBiMGVhZjA4YmMwNWYz
ZjQ1NWFhMTdiYTQ1ZDA0NTA2ZDAwOWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcApAQCAtMjAxMSwxMiArMjAxMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVyCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RydWN0dXJlID0gU3RydWN0dXJl
OjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQsICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKICAgICAgICAgICAgIHNsb3Quc2V0SGl0
KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSAmJiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFz
dHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmVJRCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zm
c2V0OwotICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGlu
dmFsaWRPZmZzZXQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCAhdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5zZXRTdHJ1Y3R1cmUo
dm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaAppbmRleCAzMjBhNDdhN2I4MzQ1OWEyYjhkOTdiMjFkNDQ1N2ExODFhYTI4
ZWVmLi5hMDVkZjg3YjZlZDIwOGFjODIzODgwZTNmYTQwMTdlNzUwMDE3NWY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNTMyLDcgKzUzMiw2IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0Nl
bGwqKSBjb25zdDsKLSAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hl
Y2tDZWxsKSBjb25zdDsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggM2RjMTdiNzMzNTk5NGU4
M2UxMTEwMmQwZTllY2FiMGQ2ZTQ5ODA1Ny4uMTVkYWQyNmY5Yzc4MTg5YzNlZGZhOWIxODNhYzcz
ZWE2MTI4NTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaApAQCAtMjU2LDE5ICsyNTYsNiBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6
Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICByZXR1cm4g
anNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0ZWZ1
bFR5cGVkQXJyYXk7CiB9CiAKLWlubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5n
SGVhZGVyKGJvb2wmIG11c3RDaGVja0NlbGwpIGNvbnN0Ci17Ci0gICAgbXVzdENoZWNrQ2VsbCA9
IGZhbHNlOwotICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlw
ZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBt
dXN0Q2hlY2tDZWxsID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogaW5saW5lIGJvb2wg
U3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKSAmJiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTMxNDlk
ZTNmMGU1Y2VlMDhmYTI4OGIwZGQ4OWU4NTdiMGZkMTZiLi44NGZkZDg3ZWRkNDJhNTIyZjM0YjE0
M2VmMDJjMmU0ZjM0MDE0ZmM3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTAzLTEyICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBkZWxldGVC
eUlkIHRvIGJlIGNhY2hlZCBpbiB0aGUgREZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxs
b2NhdGlvbi1zaW5raW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChu
b0lubGluZS5hc3NlcnQuYmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3guZG9B
bGxvYzEpOgorICAgICAgICAobm9JbmxpbmUuZG9BbGxvYzEpOgorICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKGJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94
LnBvbHl2YXJpYW50KToKKyAgICAgICAgKGRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmRv
QWxsb2MxLmRvQWxsb2MyKToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2MyKToKKyAgICAgICAg
KiBzdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5hc3NlcnRfdGhyb3dzKToKKyAgICAg
ICAgKG5vSW5saW5lLmFzc2VydF90aHJvd3MuYmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUu
YmxhY2tib3gudGVzdFNpbmdsZVN0cnVjdHVyZS5kb0FsbG9jMSk6CisgICAgICAgIChub0lubGlu
ZS5ibGFja2JveC50ZXN0U2luZ2xlU3RydWN0dXJlKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RT
aW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS5kb0RlbGV0ZTIpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0
dXJlLmRvQWxsb2MyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVz
dElubGluZVNpbmdsZVN0cnVjdHVyZSk6CisgICAgICAgIChub0lubGluZS50ZXN0SW5saW5lU2lu
Z2xlU3RydWN0dXJlLnRlc3RFeGl0LmRvRGVsZXRlMyk6CisgICAgICAgIChub0lubGluZS50ZXN0
SW5saW5lU2luZ2xlU3RydWN0dXJlLnRlc3RFeGl0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RF
eGl0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzLmRvQWxsb2M0KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RFeGl0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RTaW5nbGVTdHJ1Y3R1cmVNaXNzLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0LnN0cmlu
Z19hcHBlYXJlZF9oZXJlLmRvQWxsb2M1KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVT
dHJ1Y3R1cmVNaXNzLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVN
aXNzTm9uQ29uZmlndXJhYmxlLmRvQWxsb2M2KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5n
bGVTdHJ1Y3R1cmVNaXNzU3RyaWN0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJh
YmxlKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmln
dXJhYmxlLnRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eS5kb0FsbG9jNyk6CisgICAgICAgIChub0lu
bGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZS50ZXN0U2luZ2xlU3Ry
dWN0dXJlRW1wdHkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5
LnRlc3RQb2x5bW9ycGhpYy5kb0RlbGV0ZTgpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmds
ZVN0cnVjdHVyZUVtcHR5LnRlc3RQb2x5bW9ycGhpYyk6CisgICAgICAgIChub0lubGluZS50ZXN0
UG9seW1vcnBoaWMudGVzdFBvbHl2YXJpYW50LmRvRGVsZXRlOSk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0UG9seW1vcnBoaWMudGVzdFBvbHl2YXJpYW50LnBvbHl2YXJpYW50KToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RQb2x5bW9ycGhpYy50ZXN0UG9seXZhcmlhbnQpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFBvbHl2YXJpYW50LnRlc3RDb25zdGFudEZvbGRpbmcuZG9EZWxldGUxMCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0UG9seXZhcmlhbnQudGVzdENvbnN0YW50Rm9sZGluZyk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0Q29uc3RhbnRGb2xkaW5nLnRlc3RPYmplY3RTaW5raW5nLmRv
QWxsb2MxMSk6CisgICAgICAgIChub0lubGluZS50ZXN0Q29uc3RhbnRGb2xkaW5nLnRlc3RPYmpl
Y3RTaW5raW5nKToKKwogMjAyMC0wMy0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgSGFuZGxlIGFuIG91dCBvZiBtZW1vcnkgZXJyb3Igd2hpbGUgY29uc3RydWN0
aW5nIHRoZSBCeXRlY29kZUdlbmVyYXRvci4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA2NjM0NjRmMzE3N2NiNTlmYTZjZjkyNGUxNDIyNzQ2NTk0MDQxMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2Nh
dGlvbi1zaW5raW5nLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAi
QXBwbGUgV2F0Y2ggU2VyaWVzIDMiCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAg
ICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFp
bGVkIikKK30KK25vSW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAg
IHJldHVybiB4Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gZG9BbGxvYzEoKSB7
CisgICAgbGV0IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLnkgPSA3CisgICAgb2Jq
LnkgPSBibGFja2JveChvYmoueSkKKyAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAgIHJldHVy
biBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzEpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAw
MDAwMDA7ICsraSkgeworICAgIGRvQWxsb2MxKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZjdjYmNiZDY5OWIzYjAzMjY3Y2IwMWYxMjdhMGY1MjJjMWViNWQzCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5Lmpz
CkBAIC0wLDAgKzEsNDEgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2Vy
aWVzIDMiCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlv
bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30KKworZnVu
Y3Rpb24gYmxhY2tib3goeCkgeworICAgIHJldHVybiB4Cit9Citub0lubGluZShibGFja2JveCkK
KworZnVuY3Rpb24gcG9seXZhcmlhbnQoeCkgeworICAgIGFzc2VydChkZWxldGUgeC54KQorfQor
CitmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUK
KyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgIHBvbHl2YXJp
YW50KG9iaikKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2MxKQorCitmdW5j
dGlvbiBkb0FsbG9jMigpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBv
YmouYiA9IDkKKyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAg
IHBvbHl2YXJpYW50KG9iaikKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2My
KQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBkb0FsbG9jMSgp
CisgICAgZG9BbGxvYzIoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWRmZy1pbmxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZn
LWlubGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmI4MmYyODI4MGJjMTUyMGQ2ZGM4ZjNjMTM1ZmRjMGFj
YzMwNDYzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5
LWRmZy1pbmxpbmUuanMKQEAgLTAsMCArMSwyODggQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRp
b24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3Nl
cnRpb24gZmFpbGVkIikKK30KK25vSW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYXNzZXJ0X3Ro
cm93cyhmKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpCisgICAgfSBjYXRjaCB7CisgICAgICAg
IHJldHVybgorICAgIH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQor
fQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAg
IHJldHVybiB4Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0
cnVjdHVyZSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICAgICAgbGV0IG9iaiA9
IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkg
PSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICAgICAg
cmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxKQorCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzEoKQorICAgIH0K
K30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RJbmxpbmVT
aW5nbGVTdHJ1Y3R1cmUoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUyKG8pIHsKKyAgICAgICAg
YXNzZXJ0KGRlbGV0ZSBvLngpCisgICAgfQorCisgICAgZnVuY3Rpb24gZG9BbGxvYzIoKSB7Cisg
ICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3
CisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGRvRGVsZXRlMihvYmop
CisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMikKKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTIoeyBp
LCBmOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGksIGU6IDQgfSkKKyAgICAgICAgZG9EZWxl
dGUyKHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBjOiA0IH0pCisgICAgICAg
IGRvRGVsZXRlMih7IGksIGI6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYTogNCB9KQor
ICAgICAgICBkb0FsbG9jMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzIoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RJ
bmxpbmVTaW5nbGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RFeGl0KCkgeworICAgIGZ1bmN0
aW9uIGRvRGVsZXRlMyhvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICB9
CisgICAgbm9JbmxpbmUoZG9EZWxldGUzKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGY6
IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTMo
eyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9E
ZWxldGUzKHsgaSwgYjogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAg
fQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9E
ZWxldGUzKHsgaSwgYTogNCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RFeGl0KQorCitmdW5j
dGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlTWlzcygpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNCgp
IHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmou
eSA9IDcKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0KGRl
bGV0ZSBvYmoueikKKyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRv
QWxsb2M0KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAg
ICAgZG9BbGxvYzQoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNz
KQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpIHsKKyAgICAidXNl
IHN0cmljdCIKKworICAgIGZ1bmN0aW9uIGRvQWxsb2M1KCkgeworICAgICAgICBsZXQgb2JqID0g
e30KKyAgICAgICAgb2JqLnkgPSA1CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmos
ICJ4IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZh
bHVlOiA0MQorICAgICAgICB9KQorICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAg
ICAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBvYmoueCkKKyAgICAgICAgcmV0dXJuIG9i
ai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M1KQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzUoKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0U2luZ2xl
U3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNigp
IHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai55ID0gNQorICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkob2JqLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTog
ZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgb2JqLnkg
PSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0KCEoZGVsZXRlIG9iai54KSkKKyAgICAg
ICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M2KQorCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzYoKQorICAg
IH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKQor
CitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkoKSB7CisgICAgZnVuY3Rpb24gZG9B
bGxvYzcoKSB7CisgICAgICAgIGxldCBvYmogPSB7IGE6IDEsIGI6IDJ9CisgICAgICAgIG9ialsx
XSA9IDUKKyAgICAgICAgZGVsZXRlIG9ialsxXQorICAgICAgICBibGFja2JveCgoKSA9PiBvYmou
eCA9IDUpKCkKKyAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09IDMpCisg
ICAgICAgIGFzc2VydChkZWxldGUgb2JqLmEpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLmIp
CisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgICAgIGFzc2VydChPYmplY3Qua2V5
cyhvYmopLmxlbmd0aCA9PSAwKQorICAgICAgICBvYmoueCA9IDcKKyAgICAgICAgcmV0dXJuIG9i
agorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jNykKKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2M3KCkKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpYygp
IHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTgob2JqKSB7CisgICAgICAgIGFzc2VydChkZWxldGUg
b2JqLnkpCisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGU4
KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgZG9EZWxldGU4
KHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpIHsKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgZjogNCB9KQorICAgICAgICBhc3NlcnQoZG9E
ZWxldGU4KHsgaSwgZTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0Rl
bGV0ZTgoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOCh7IGksIGM6IDQgfSkKKyAgICAg
ICAgZG9EZWxldGU4KHsgaSwgYjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU4KHsgaSwg
YTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgIH0KKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGksIGE6IDQgfSkK
KyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWMpCisKK2Z1bmN0aW9uIHRlc3RQb2x5
dmFyaWFudCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTkob2JqKSB7CisgICAgICAgIGFzc2Vy
dChkZWxldGUgb2JqLnkpCisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisKKyAgICBmdW5jdGlv
biBwb2x5dmFyaWFudChvYmopIHsKKyAgICAgICAgcmV0dXJuIGRvRGVsZXRlOShvYmopCisgICAg
fQorICAgIG5vSW5saW5lKHBvbHl2YXJpYW50KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1
OyArK2kpIHsKKyAgICAgICAgcG9seXZhcmlhbnQoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTkoeyBp
LCBmOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTkoeyBpLCBlOiA0LCB5OiAxMCB9KS55
ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGQ6IDQgfSkKKyAgICAgICAg
ZG9EZWxldGU5KHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTkoeyBpLCBiOiA0IH0pCisg
ICAgICAgIGFzc2VydChkb0RlbGV0ZTkoeyBpLCBhOiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmlu
ZWQpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAg
ICAgICAgcG9seXZhcmlhbnQoeyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBv
bHl2YXJpYW50KQorCitmdW5jdGlvbiB0ZXN0Q29uc3RhbnRGb2xkaW5nKCkgeworICAgIGZ1bmN0
aW9uIGRvRGVsZXRlMTAob2JqKSB7CisgICAgICAgIGlmICgkdm0uZGZnVHJ1ZSgpKSB7CisgICAg
ICAgICAgICBvYmogPSB7IGk6IDAsIGE6IDUsIHk6IDIwIH0KKyAgICAgICAgfQorICAgICAgICBh
c3NlcnQoZGVsZXRlIG9iai55KQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai56KQorICAgICAg
ICByZXR1cm4gb2JqCisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTApCisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUx
MCh7IGksIGE6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGUx
MCh7IGksIGY6IDQgfSkKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlMTAoeyBpLCBlOiA0LCB5OiAx
MCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBkOiA0IH0pCisg
ICAgICAgIGRvRGVsZXRlMTAoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBi
OiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdENvbnN0YW50Rm9sZGluZykKKworZnVuY3Rp
b24gdGVzdE9iamVjdFNpbmtpbmcoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzExKGkpIHsKKyAg
ICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gMQorICAgICAgICBvYmoueSA9IDIK
KyAgICAgICAgaWYgKGkgPT0gMCkKKyAgICAgICAgICAgIG9iai5hID0gMworICAgICAgICBlbHNl
IGlmIChpID09IDEpCisgICAgICAgICAgICBvYmouYiA9IDMKKyAgICAgICAgZWxzZSBpZiAoaSA9
PSAzKQorICAgICAgICAgICAgb2JqLmMgPSAzCisgICAgICAgIGRlbGV0ZSBvYmoueAorICAgICAg
ICByZXR1cm4gb2JqLnkKKworICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMTEpCisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9BbGxv
YzExKGkgJSAzKSA9PSAyKQorICAgIH0KKyAgICBhc3NlcnQoZG9BbGxvYzExKDQpID09IDIpCit9
Citub0lubGluZSh0ZXN0T2JqZWN0U2lua2luZykKKwordGVzdFNpbmdsZVN0cnVjdHVyZSgpCit0
ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKCkKK3Rlc3RFeGl0KCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1
cmVNaXNzKCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KCkKK3Rlc3RTaW5nbGVTdHJ1
Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eSgpCit0
ZXN0UG9seW1vcnBoaWMoKQordGVzdFBvbHl2YXJpYW50KCkKK3Rlc3RDb25zdGFudEZvbGRpbmco
KQordGVzdE9iamVjdFNpbmtpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393539</attachid>
            <date>2020-03-13 15:31:51 -0700</date>
            <delta_ts>2020-03-13 15:40:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200313153150.patch</filename>
            <type>text/plain</type>
            <size>105009</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjNhNTU1Yzc5Mjc4OWM1NjZkODM2NmE1ZTI4ZTA2ODc2OWFhZDQzLi4zZGUxMmE5NWI0N2Q5MmM0
NzI1MzEyZmRkOTM2NDU4MjNlYzgxYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzQgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gd2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBz
dHJ1Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAg
ICAgY3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1
cm5pbmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMs
CisgICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUg
KG9yIGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9n
aWMgZm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0
eSB0byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdo
aWxlIGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0
aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRl
bGV0ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBt
aXNzLCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKwor
ICAgICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUg
aWRlbnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVt
b3ZlcyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYg
d2UgbmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFs
c28gZml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1
cyBvZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAg
ICAgICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2Yg
dGhpcyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKwor
ICAgICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlh
bnQtZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3Bl
cnR5LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0
ZW1wdFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3Ry
dWN0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6
CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxl
dGVCeUlkVmFyaWFudDo6b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6Om5ld1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
SWRWYXJpYW50OjpyZXN1bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFu
dDo6b2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJv
cGVydHlVbnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBz
KToKKyAgICAgICAgKiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRl
bGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6RGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlND
OjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3Rh
dHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpt
ZXJnZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeVN0YXR1czo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6
ZHVtcCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkRGVsZXRlQnlTdGF0
dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZSk6Cisg
ICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKiBi
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVz
ZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKToKKyAgICAg
ICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6CisgICAgICAgICog
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25z
dGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q29u
c3RhbnRGb2xkaW5nUGhhc2U6OmVtaXREZWxldGVCeU9mZnNldCk6CisgICAgICAgICogZGZnL0RG
R0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZH
TWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Ok11bHRpRGVsZXRlQnlPZmZzZXREYXRhOjp3cml0ZXNTdHJ1Y3R1cmVzIGNvbnN0KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc011bHRp
RGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjptdWx0aURlbGV0
ZUJ5T2Zmc2V0RGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRGVsZXRlQnlTdGF0
dXMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRlbGV0ZUJ5U3RhdHVzKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZTo6aWRlbnRpZnlSZWR1bmRhbnRTdHJ1Y3R1cmVDaGVja3MpOgorICAgICAgICAoSlNDOjpERkc6
OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50QXJyYXlDaGVja3MpOgor
ICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0
aURlbGV0ZUJ5T2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6Om1heUhhdmVJbmRleGluZ0hlYWRlciBjb25zdCk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpj
cmVhdGVEZWxldGUpOgorICAgICAgICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlk
VmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZh
cmlhbnQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OndyaXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlND
OjpEZWxldGVCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpEZWxldGVC
eUlkVmFyaWFudDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50
OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wSW5Db250
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om9sZFN0cnVjdHVyZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpuZXdTdHJ1Y3R1cmUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6cmVzdWx0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om9mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkRl
bGV0ZUJ5SWRWYXJpYW50Ojppc1Byb3BlcnR5VW5zZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpE
ZWxldGVCeUlkVmFyaWFudDo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0
ZUJ5SWRWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0
dXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlh
bnQpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OkRlbGV0ZUJ5U3RhdHVzKToKKyAgICAgICAg
KEpTQzo6RGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAg
ICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAgICAgICAo
SlNDOjpEZWxldGVCeVN0YXR1czo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1
czo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlTdGF0dXM6OnNpbmdsZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6dmlzaXRBZ2dyZWdhdGUp
OgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAo
SlNDOjpEZWxldGVCeVN0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6ZHVtcCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcDoKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNl
czo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkRGVsZXRl
QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0
ZSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKToKKyAgICAg
ICAgKiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmg6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKToK
KyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6CisgICAg
ICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmVtaXREZWxldGVCeU9mZnNldCk6CisgICAgICAgICog
ZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBk
ZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6Ok11bHRpRGVsZXRlQnlPZmZzZXREYXRhOjp3cml0ZXNTdHJ1Y3R1cmVzIGNvbnN0
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c011bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjptdWx0
aURlbGV0ZUJ5T2Zmc2V0RGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRGVsZXRl
QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmRlbGV0ZUJ5U3RhdHVzKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNo
ZWNrSG9pc3RpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRTdHJ1Y3R1cmVDaGVja3MpOgorICAgICAgICAoSlND
OjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6OmlkZW50aWZ5UmVkdW5kYW50QXJyYXlDaGVj
a3MpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1Zh
cmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVNdWx0aURlbGV0ZUJ5T2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyIGNvbnN0
KTogRGVsZXRlZC4KKwogMjAyMC0wMy0wNSAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbSlNDT25seV0gMzItYml0cyB3YXJuaW5nIG9uIG1lbXNldCBvZiBKU1Zh
bHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjNjY2MmY3ZmU1Njcw
OWY0NTA5NGMwNzNmNTVjNTA4MWNhODg3ZS4uMzY4NDhjMjU2MzRmYjdhNjQ2MGE2ZDYyNDkyOGQy
NGQwMjFjNzI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTAyLDYg
KzUwMiw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgYnl0ZWNvZGUvQ29kZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKICAg
ICBieXRlY29kZS9EYXRhRm9ybWF0LmgKKyAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5o
CisgICAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2YWxD
b2RlQ2FjaGUuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29kZS9F
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZmI3NDU2NTE3ZjhmNzRjNjlmMWM5ZDViZGMyMDJjNGY2ZTQ0MTg1ZC4uNWRiZTM3NDc2NTZk
ZDUzZTUxZjc2MzAzMzA2MDRjMGE5OWU3NzlhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTExNzgsNyArMTE3OCw5IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBK
U1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NF
MUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThC
MDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzEx
RkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczMTFGQTMxMjQwREIxRDMwMDNENDhE
QiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovOyB9OwogCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5
RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVy
dHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0FEMDYyODIzRkY2NjI2MDBG
NTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMz
NTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VM
b29wU3RyZW5ndGguaCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21D
b250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4MTM5
MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1v
ZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zOTcyLDcgKzM5NzQsMTEgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0ND
MUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERC
IC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMzMjQwREIyNDkwMDNENDhE
QiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVCeUlk
VmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTkwRDk2MjQwMDkz
NDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxl
dGVCeVN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczNEI2NTU0MjNG
NEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZWxldGVCeVN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsg
cGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJl
bmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxv
YWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIzOSw2ICs4MjQ1LDEwIEBACiAJCQkJ
MEZDNzEyREQxN0NEODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5o
ICovLAogCQkJCUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAu
Y3BwICovLAogCQkJCUZFNTA2ODY0MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1
bXAuaCAqLywKKwkJCQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlh
bnQuY3BwICovLAorCQkJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFy
aWFudC5oICovLAorCQkJCTczMTkwRDk2MjQwMDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0YXR1
cy5jcHAgKi8sCisJCQkJNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggKi8sCiAJCQkJMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNw
cCAqLywKIAkJCQkwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAq
LywKIAkJCQkwRjJFQkJBQTFERURGOTRFMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5j
cHAgKi8sCkBAIC05MjEyLDYgKzkyMjIsOCBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFC
NyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0
QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5MyAv
KiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzM0QjY1NTUyM0Y1QzEwNDAw
QTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMw
M0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggNzZmMWM2OTQ4NWM2ZmNiZWU0
ODdlNWFjOTg2Y2E0NjM2MzUzYWViZS4uNWU2YTE3NDU3YWJmYzcyMDQ2YmIxYjlmOWY4MWNlZGQ0
YmIxNzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjE4LDYgKzIxOCw4IEBA
IGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAogYnl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAKIGJ5
dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKIGJ5dGVjb2RlL0RlZmVycmVk
U291cmNlRHVtcC5jcHAKK2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAorYnl0ZWNvZGUvRGVs
ZXRlQnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAogYnl0
ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0Vk
Z2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
aW5kZXggMTE0YzIzYzUyODNiN2JkM2EwZDcwYmJjZjRiNTJlY2IxNTIxYzE4Zi4uNDg5MWVkNTFj
YTllMjU4NGQwY2E4NzI1Y2FmYTY0Y2JkZmU3OGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMTI5LDE1ICsxMjksNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0
eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0
dXJlLT5wcmV2aW91c0lEKHZtKSk7Ci0gICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkgJiYgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7Ci0gICAgICAg
IC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBj
aGVjayB0aGUganNjZWxsLgotICAgICAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2RlIGJlbG93Lgot
ICAgICAgICBib29sIG1heU5lZWRUb0NoZWNrQ2VsbDsKLSAgICAgICAgbmV3U3RydWN0dXJlLT5t
YXlIYXZlSW5kZXhpbmdIZWFkZXIobWF5TmVlZFRvQ2hlY2tDZWxsKTsKLQotICAgICAgICBpZiAo
bWF5TmVlZFRvQ2hlY2tDZWxsKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQor
ICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8IG9sZFN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxB
Y2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIsIERlbGV0ZSwgaWRlbnRpZmllciwg
b2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9CiAKQEAgLTE5NDksMTkgKzE5NDEs
OSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUm
IHN0YXRlKQogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OlByZXNlcnZlZFN0YXRl
IHByZXNlcnZlZFN0YXRlID0KICAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJl
Z2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFj
a1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCi0gICAgICAgIGJvb2wgbWF5TmVlZFRvQ2hlY2tDZWxs
OwotICAgICAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gbmV3U3RydWN0dXJlKCktPm1heUhh
dmVJbmRleGluZ0hlYWRlcihtYXlOZWVkVG9DaGVja0NlbGwpOwotICAgICAgICAvLyBXZSBkbyBu
b3QgY2FjaGUgdGhpcyBjYXNlIHlldCBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRo
ZSBqc2NlbGwuCi0gICAgICAgIC8vIFNlZSBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyIGFu
ZCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkuCi0gICAgICAgIEFTU0VSVCghbWF5TmVlZFRvQ2hl
Y2tDZWxsKTsKLSAgICAgICAgLy8gQ2xlYXIgdGhlIGJ1dHRlcmZseSBpZiB3ZSBoYXZlIG5vIHBy
b3BlcnRpZXMsIHNpbmNlIG91ciBwdXQgY29kZSBleHBlY3RzIHRoaXMuCi0gICAgICAgIGJvb2wg
c2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0dGVyZmx5ID0gIW5ld1N0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpICYmIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYm
ICFoYXNJbmRleGluZ0hlYWRlcjsKLQogICAgICAgICBqaXQubW92ZVZhbHVlKEpTVmFsdWUoKSwg
dmFsdWVSZWdzKTsKIAotICAgICAgICBpZiAoc2hvdWxkTnVrZVN0cnVjdHVyZUFuZENsZWFyQnV0
dGVyZmx5KSB7Ci0gICAgICAgICAgICBqaXQubnVrZVN0cnVjdHVyZUFuZFN0b3JlQnV0dGVyZmx5
KHZtLCB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBiYXNlR1BSKTsKLSAgICAgICAgfSBlbHNlIGlm
IChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsKKyAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgewogICAgICAgICAgICAgaml0LnN0b3JlVmFsdWUoCiAgICAgICAgICAgICAg
ICAgdmFsdWVSZWdzLAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcygKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTFlZWZh
MDA5OGU2MzVhNzFlNmI3MjFmYmU4YzBhMWYyOWUxOWU5Ni4uOWFhZjY3ZTY5ZjBmZDBkZDA0OWNm
OTQzZDI3MGMxMDVkYjYxMTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTE0OTksNiArMTQ5OSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJ
Q1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0
KQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRl
cmF0b3ItPnZhbHVlLnB1dFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmlucykKICAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5pblN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmRlbGV0ZXMpCisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
ZGVsZXRlU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIH0KICNlbmRpZgogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlk
VmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZh
cmlhbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkYWQ2ZjgwZmQ4YjgxMTM2ZTFjYzAwYTI2ZTk5YTA1OTli
MTI0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVsZXRlQnlJZFZhcmlhbnQuY3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRlbGV0ZUJ5SWRWYXJpYW50LmgiCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1
bXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK0RlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlk
VmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEFjY2Vzc0Nhc2U6OkFjY2Vz
c1R5cGUgdHlwZSwKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICA6IG1fcmVzdWx0KHR5cGUgIT0g
QWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlKQorICAgICwgbV9vbGRTdHJ1Y3R1cmUo
b2xkU3RydWN0dXJlKQorICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQorICAgICwg
bV9vZmZzZXQob2Zmc2V0KQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmllcikp
Cit7CisgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzQ2FzZTo6RGVsZXRlIHx8IHR5cGUgPT0gQWNj
ZXNzQ2FzZTo6RGVsZXRlTWlzcyB8fCB0eXBlID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZp
Z3VyYWJsZSk7CisgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSk7CisgICAgaWYgKG1fb2Zmc2V0ID09
IGludmFsaWRPZmZzZXQpCisgICAgICAgIEFTU0VSVCghbmV3U3RydWN0dXJlKTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworfQorCitEZWxldGVCeUlkVmFyaWFudDo6
fkRlbGV0ZUJ5SWRWYXJpYW50KCkgeyB9CisKK0RlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVCeUlk
VmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgKnRoaXMgPSBv
dGhlcjsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQmIERlbGV0ZUJ5SWRWYXJpYW50OjpvcGVyYXRv
cj0oY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgIG1faWRlbnRpZmllciA9
IG90aGVyLm1faWRlbnRpZmllcjsKKyAgICBtX3Jlc3VsdCA9IG90aGVyLm1fcmVzdWx0OworICAg
IG1fb2xkU3RydWN0dXJlID0gb3RoZXIubV9vbGRTdHJ1Y3R1cmU7CisgICAgbV9uZXdTdHJ1Y3R1
cmUgPSBvdGhlci5tX25ld1N0cnVjdHVyZTsKKyAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0
OworICAgIHJldHVybiAqdGhpczsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1w
dFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlmICghIW1f
aWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKG1fcmVzdWx0ICE9IG90aGVyLm1fcmVzdWx0KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAobV9pZGVudGlmaWVyICYmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIu
bV9pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2Zmc2V0
ICE9IG90aGVyLm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9v
bGRTdHJ1Y3R1cmUgIT0gb3RoZXIubV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBBU1NFUlQobV9uZXdTdHJ1Y3R1cmUgPT0gb3RoZXIubV9uZXdTdHJ1Y3R1cmUpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGVsZXRlQnlJZFZhcmlhbnQ6OndyaXRlc1N0
cnVjdHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiAhIW5ld1N0cnVjdHVyZSgpOworfQorCit2
b2lkIERlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Cit9CisKK3Zv
aWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIGlmIChtX29sZFN0cnVjdHVyZSkKKyAgICAgICAgbV9vbGRTdHJ1Y3R1cmUtPm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9uZXdT
dHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5SWRWYXJp
YW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4dChv
dXQsIDApOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0pCit7
CisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fb2xkU3RydWN0dXJlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhdm0uaGVhcC5pc01hcmtlZCht
X25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQ29udGV4dCopIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8Iik7CisgICAgb3V0
LnByaW50KCJpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgcmVzdWx0PSIsIG1fcmVzdWx0KTsKKyAg
ICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiLCAiLCAqbV9vbGRTdHJ1
Y3R1cmUpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIgLT4g
IiwgKm1fbmV3U3RydWN0dXJlKTsKKyAgICBvdXQucHJpbnQoIiwgb2Zmc2V0ID0gIiwgb2Zmc2V0
KCkpOworICAgIG91dC5wcmludCgiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yOGJkNmMxMDAxYjAzNWZmNzhiYjA1YmM3Y2M0ZjcwZTMxY2ZmYmRjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRW
YXJpYW50LmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgor
I2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1
cy5oIgorI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCisjaW5jbHVkZSAi
UHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3
dGYvQm94Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2Ns
YXNzIERlbGV0ZUJ5U3RhdHVzOworc3RydWN0IER1bXBDb250ZXh0OworCitjbGFzcyBEZWxldGVC
eUlkVmFyaWFudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
RGVsZXRlQnlJZFZhcmlhbnQoCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIEFjY2Vzc0Nh
c2U6OkFjY2Vzc1R5cGUsCisgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN1dHJlLCBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOworCisgICAgfkRlbGV0ZUJ5SWRWYXJp
YW50KCk7CisKKyAgICBEZWxldGVCeUlkVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYp
OworICAgIERlbGV0ZUJ5SWRWYXJpYW50JiBvcGVyYXRvcj0oY29uc3QgRGVsZXRlQnlJZFZhcmlh
bnQmKTsKKworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9v
bGRTdHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmV3U3RydWN0dXJlOyB9CisgICAgYm9vbCByZXN1bHQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3VsdDsgfQorICAgIGJvb2wgd3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OworCisgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKworICAgIGJv
b2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0KCkgPT0gaW52YWxpZE9m
ZnNldDsgfQorCisgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBEZWxldGVCeUlkVmFyaWFu
dCYgb3RoZXIpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAg
IHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OworCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisK
KyAgICBib29sIG92ZXJsYXBzKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKKyAgICB7
CisgICAgICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobV9pZGVudGlmaWVyKSB7CisgICAg
ICAgICAgICBpZiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2xkU3Ry
dWN0dXJlID09IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgRGVsZXRlQnlTdGF0dXM7CisKKyAgICBib29sIG1fcmVzdWx0OworICAgIFN0
cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsK
KyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM5Yjdh
ZGNmNWFmNzYwMzBlODc4MjUyYmVlYzQxODI2YmEyNDhhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAKQEAgLTAsMCAr
MSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIKKworI2luY2x1
ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxp
bmVzLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNVdGlscy5o
IgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJKU1Njb3BlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk1vZHVsZU5hbWVzcGFjZUFjY2Vz
c0Nhc2UuaCIKKyNpbmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzcy5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBK
U0MgeworbmFtZXNwYWNlIERPTUpJVCB7CitjbGFzcyBHZXR0ZXJTZXR0ZXI7Cit9CisKK2Jvb2wg
RGVsZXRlQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZh
cmlhbnQpCit7CisgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2
YXJpYW50KTsKK30KKworRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JC
YXNlbGluZShDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcgZGlkRXhpdCkKK3sKKyAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7CisKKyAgICBEZWxldGVC
eVN0YXR1cyByZXN1bHQ7CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICByZXN1bHQgPSBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgbG9ja2VyLCBi
YXNlbGluZUJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZv
KTsKKworICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9u
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9QQVJBTShkaWRF
eGl0KTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjZW5kaWYKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKyNpZiBFTkFCTEUoSklUKQorRGVsZXRlQnlTdGF0dXM6OkRlbGV0
ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit7CisgICAgc3dpdGNoIChzdW1tYXJ5KSB7CisgICAgY2FzZSBTdHViSW5mb1N1bW1h
cnk6Ok5vSW5mb3JtYXRpb246CisgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlNpbXBsZToKKyAgICBjYXNl
IFN0dWJJbmZvU3VtbWFyeTo6TWFrZXNDYWxsczoKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6
VGFrZXNTbG93UGF0aEFuZE1ha2VzQ2FsbHM6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6VGFr
ZXNTbG93UGF0aDoKKyAgICAgICAgbV9zdGF0ZSA9IHN0dWJJbmZvLnRvb2tTbG93UGF0aCA/IE9i
c2VydmVkVGFrZXNTbG93UGF0aCA6IExpa2VseVRha2VzU2xvd1BhdGg7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworRGVsZXRl
QnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAorICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmxv
Y2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBTdHViSW5mb1N1bW1hcnkg
c3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KGJsb2NrLT52bSgpLCBzdHViSW5m
byk7CisgICAgaWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAgICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cyhzdW1tYXJ5LCAqc3R1YkluZm8pOworCisgICAgRGVsZXRlQnlTdGF0dXMgcmVz
dWx0OworICAgIHJlc3VsdC5tX3N0YXRlID0gU2ltcGxlOworICAgIHN3aXRjaCAoc3R1YkluZm8t
PmNhY2hlVHlwZSgpKSB7CisgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoTm9JbmZvcm1hdGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6
U3R1YjogeworICAgICAgICBQb2x5bW9ycGhpY0FjY2VzcyogbGlzdCA9IHN0dWJJbmZvLT51LnN0
dWI7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBs
aXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7CisgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNl
JiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5kZXgpOworICAgICAgICAgICAgQVNTRVJUKCFhY2Nl
c3MudmlhUHJveHkoKSk7CisKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNj
ZXNzLnN0cnVjdHVyZSgpOworICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisKKyAgICAg
ICAgICAgIHN3aXRjaCAoYWNjZXNzLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBY2Nlc3ND
YXNlOjpEZWxldGVNaXNzOgorICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGVOb25D
b25maWd1cmFibGU6IHsKKyAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50
KGFjY2Vzcy5pZGVudGlmaWVyKCksIGFjY2Vzcy50eXBlKCksIHN0cnVjdHVyZSwgbnVsbHB0ciwg
aW52YWxpZE9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFu
dCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpT
Qzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZTog
eworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwgYWNjZXNz
LmlkZW50aWZpZXIoKS51aWQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKG9mZnNldCwgb2Zmc2V0ID09IGFjY2Vzcy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFuZXdTdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0
YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlk
ZW50aWZpZXIoKSwgYWNjZXNzLnR5cGUoKSwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGFjY2Vz
cy5vZmZzZXQoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50
KHZhcmlhbnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlND
OjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3Rh
dHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1h
cnkpLCAqc3R1YkluZm8pOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERl
bGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
SUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250
ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAgICBCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICBFeGl0RmxhZyBk
aWRFeGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShiYXNlbGluZUJsb2NrLCBieXRlY29kZUluZGV4
KTsKKworICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogY29udGV4dFN0YWNrKSB7
CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKKwor
ICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25zdCBEZWxldGVCeVN0YXR1cyYgcmVzdWx0KSAt
PiBEZWxldGVCeVN0YXR1cyB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlzSW5saW5lZChj
b2RlT3JpZ2luKSkgeworICAgICAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIGJhc2VsaW5lUmVz
dWx0ID0gY29tcHV0ZUZvckJhc2VsaW5lKAorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUJs
b2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7CisgICAgICAgICAgICAg
ICAgYmFzZWxpbmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YmFzZWxpbmVSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5p
c1NldChFeGl0RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xv
d1ZlcnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisKKyAg
ICAgICAgaWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMg
cmVzdWx0OworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KAorICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9j
aywgc3RhdHVzLnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxlc3MocmVzdWx0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChzdGF0dXMuZGVsZXRlU3RhdHVzKQorICAgICAgICAgICAgcmV0
dXJuIGJsZXNzKCpzdGF0dXMuZGVsZXRlU3RhdHVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gY29t
cHV0ZUZvckJhc2VsaW5lKGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4
LCBkaWRFeGl0KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKK0RlbGV0ZUJ5U3RhdHVz
IERlbGV0ZUJ5U3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgaWYgKG9ic2VydmVk
U2xvd1BhdGgoKSkKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE9ic2VydmVkVGFrZXNT
bG93UGF0aCk7CisgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgp
OworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjptZXJnZShjb25zdCBEZWxldGVCeVN0YXR1cyYg
b3RoZXIpCit7CisgICAgaWYgKG90aGVyLm1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBtZXJnZVNsb3cgPSBbJl0gKCkgeworICAgICAgICBpZiAo
b2JzZXJ2ZWRTbG93UGF0aCgpIHx8IG90aGVyLm9ic2VydmVkU2xvd1BhdGgoKSkKKyAgICAgICAg
ICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgKnRoaXMgPSBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Ns
b3dQYXRoKTsKKyAgICB9OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0lu
Zm9ybWF0aW9uOgorICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICByZXR1cm47CisKKyAg
ICBjYXNlIFNpbXBsZToKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gb3RoZXIubV9zdGF0ZSkKKyAg
ICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsKKworICAgICAgICBmb3IgKGF1dG8mIG90aGVy
VmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgICAgIGlmICghYXBwZW5kVmFy
aWFudChvdGhlclZhcmlhbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZVNsb3coKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm47CisKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1Bh
dGg6CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIHJldHVybiBtZXJn
ZVNsb3coKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIERlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCit7
CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1cm47CisgICAgbV92YXJp
YW50cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgWyZdIChhdXRvJiB2YXJpYW50KSAtPiBi
b29sIHsKKyAgICAgICAgICAgIHJldHVybiAhc2V0LmNvbnRhaW5zKHZhcmlhbnQub2xkU3RydWN0
dXJlKCkpOworICAgICAgICB9KTsKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworfQorCitDYWNoZWFibGVJZGVudGlmaWVyIERl
bGV0ZUJ5U3RhdHVzOjpzaW5nbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV92YXJp
YW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciByZXN1bHQgPSBtX3ZhcmlhbnRzLmZpcnN0KCkuaWRlbnRpZmllcigpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gbV92YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7CisgICAgICAg
IGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBp
ZiAoaWRlbnRpZmllciAhPSByZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6dmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChEZWxldGVCeUlkVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQudmlzaXRBZ2dyZWdh
dGUodmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQg
OiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQor
Citib29sIERlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgZm9yIChhdXRv
JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUo
dm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
eworICAgIG91dC5wcmludCgiKCIpOworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2Ug
Tm9JbmZvcm1hdGlvbjoKKyAgICAgICAgb3V0LnByaW50KCJOb0luZm9ybWF0aW9uIik7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBvdXQucHJpbnQoIlNpbXBsZSIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpa2VseVRha2VzU2xvd1BhdGg6CisgICAgICAg
IG91dC5wcmludCgiTGlrZWx5VGFrZXNTbG93UGF0aCIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIE9ic2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJPYnNlcnZlZFRh
a2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIG91dC5wcmludCgiLCAi
LCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwgIikiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGU1YWQ2MDJiNjUxNzBjMTQ2MDI3MzdkZDdjYzg1NTc2OThmNWY3MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1
cy5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgi
CisjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5SWRWYXJp
YW50LmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgor
I2luY2x1ZGUgIlN0dWJJbmZvU3VtbWFyeS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
QWNjZXNzQ2FzZTsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwor
CitjbGFzcyBEZWxldGVCeVN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSA6IHVpbnQ4X3QgeworICAgICAgICAvLyBJdCdz
IHVuY2FjaGVkIHNvIHdlIGhhdmUgbm8gaW5mb3JtYXRpb24uCisgICAgICAgIE5vSW5mb3JtYXRp
b24sCisgICAgICAgIC8vIEl0J3MgY2FjaGVkIGZvciBhIHNpbXBsZSBhY2Nlc3MuCisgICAgICAg
IFNpbXBsZSwKKyAgICAgICAgLy8gSXQgd2lsbCBsaWtlbHkgdGFrZSB0aGUgc2xvdyBwYXRoLgor
ICAgICAgICBMaWtlbHlUYWtlc1Nsb3dQYXRoLAorICAgICAgICAvLyBJdCBoYXMgYmVlbiBzZWVu
IHRvIHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoLAor
ICAgIH07CisKKyAgICBEZWxldGVCeVN0YXR1cygpCisgICAgICAgIDogbV9zdGF0ZShOb0luZm9y
bWF0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBEZWxldGVCeVN0YXR1cyhTdGF0
ZSBzdGF0ZSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHN0YXRlICE9IFNpbXBsZSk7CisgICAgfQorCisgICAgc3RhdGljIERlbGV0ZUJ5U3RhdHVzIGNv
bXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVN
YXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4pOwor
CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisKKyAgICBib29s
IGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9ybWF0aW9uOyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGJvb2wgb2Jz
ZXJ2ZWRTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gT2JzZXJ2ZWRUYWtlc1Ns
b3dQYXRoOyB9CisgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
U2ltcGxlOyB9CisgICAgY29uc3QgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAxPiYgdmFyaWFu
dHMoKSB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBzaW5n
bGVJZGVudGlmaWVyKCkgY29uc3Q7CisKKyAgICBEZWxldGVCeVN0YXR1cyBzbG93VmVyc2lvbigp
IGNvbnN0OworCisgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMg
dG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4K
KyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKworICAgIHZvaWQgdmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
Jik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgYm9vbCBhcHBlbmRWYXJpYW50KGNv
bnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1
bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJik7CisgICAgdm9pZCBtZXJnZShjb25zdCBEZWxldGVC
eVN0YXR1cyYpOworCisgICAgc3RhdGljIERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JCYXNlbGlu
ZShDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnKTsKKyNp
ZiBFTkFCTEUoSklUKQorICAgIHN0YXRpYyBEZWxldGVCeVN0YXR1cyBjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyopOworI2Vu
ZGlmCisKKyAgICBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7CisgICAg
U3RhdGUgbV9zdGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAppbmRleCBkYmQ1YTg4MjMxMjQyMmQ0ZThi
MmVkZDNiNzk4MjJjNzY3YTdiYmM4Li5mMDMxOTAxMTVhM2I4ZTQyYjRlYjhiODc0MDNhZjJkODRl
MDM3NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0
dXNNYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAu
aApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBHZXRCeVN0YXR1czsK
IGNsYXNzIEluQnlJZFN0YXR1czsKIGNsYXNzIFB1dEJ5SWRTdGF0dXM7CitjbGFzcyBEZWxldGVC
eVN0YXR1czsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogc3RydWN0IEJ5VmFsSW5mbzsKIApA
QCAtNDgsNiArNDksNyBAQCBzdHJ1Y3QgSUNTdGF0dXMgewogICAgIEdldEJ5U3RhdHVzKiBnZXRT
dGF0dXMgeyBudWxscHRyIH07CiAgICAgSW5CeUlkU3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIg
fTsKICAgICBQdXRCeUlkU3RhdHVzKiBwdXRTdGF0dXMgeyBudWxscHRyIH07CisgICAgRGVsZXRl
QnlTdGF0dXMqIGRlbGV0ZVN0YXR1cyB7IG51bGxwdHIgfTsKIH07CiAKIHR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBJQ1N0YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gSUNTdGF0
dXNNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRT
dGF0dXNlcy5jcHAKaW5kZXggYzk0ODRiNDg1YWRmZTZkYWI0Y2NmMmI3YWE2NDViZjc4ODk4MDgz
Mi4uZDYxNWExM2Q5YzNjNDc1YTYxNmMyZTU0NzcyOTU1NDYxNjljNDQ0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcApAQCAt
MzQsNiArMzQsNyBAQCBSZWNvcmRlZFN0YXR1c2VzJiBSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRv
cj0oUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQogICAgIGdldHMgPSBXVEZNb3ZlKG90aGVyLmdl
dHMpOwogICAgIHB1dHMgPSBXVEZNb3ZlKG90aGVyLnB1dHMpOwogICAgIGlucyA9IFdURk1vdmUo
b3RoZXIuaW5zKTsKKyAgICBkZWxldGVzID0gV1RGTW92ZShvdGhlci5kZWxldGVzKTsKICAgICBz
aHJpbmtUb0ZpdCgpOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTc1LDEwICs3NiwyMCBAQCBJ
bkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luLCBjbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0RlbGV0ZUJ5
U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luLCBjb25zdCBEZWxldGVCeVN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1
dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxEZWxldGVCeVN0YXR1cz4oc3RhdHVzKTsKKyAgICBE
ZWxldGVCeVN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIGRlbGV0ZXMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6dmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogewogICAgIGZvciAoYXV0byYgcGFpciA6IGdl
dHMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90VmlzaXRvcik7Cisg
ICAgZm9yIChhdXRvJiBwYWlyIDogZGVsZXRlcykKKyAgICAgICAgcGFpci5zZWNvbmQtPnZpc2l0
QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjptYXJr
SWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCkBAIC04OSw2ICsxMDAsOCBAQCB2b2lk
IFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikK
ICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBpbnMpCiAgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogZGVsZXRlcykKKyAgICAgICAgcGFpci5z
ZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKIH0KIAogdm9pZCBSZWNvcmRlZFN0YXR1
c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZyhWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAppbmRleCBiMzU1ZTliNjIzMzg0
NjI5MjY0ODJjN2MxYjkxZjQyMWZmZTYyMGQwLi45ZTcwNTVkMjQzZjI0YWE2YWY1YWEwOTJhZDMw
MmVmMTVhOGQwNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgogI2lu
Y2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5CeUlkU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZFN0YXR1cy5oIgpAQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0
dXNlcyB7CiAgICAgR2V0QnlTdGF0dXMqIGFkZEdldEJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
LCBjb25zdCBHZXRCeVN0YXR1cyYpOwogICAgIFB1dEJ5SWRTdGF0dXMqIGFkZFB1dEJ5SWRTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmKTsKICAgICBJbkJ5SWRT
dGF0dXMqIGFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgSW5CeUlkU3Rh
dHVzJik7CisgICAgRGVsZXRlQnlTdGF0dXMqIGFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVP
cmlnaW4mLCBjb25zdCBEZWxldGVCeVN0YXR1cyYpOwogICAgIAogICAgIHZvaWQgdmlzaXRBZ2dy
ZWdhdGUoU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7
CkBAIC02MywxMiArNjUsMTQgQEAgc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewogICAgICAgICBm
dW5jKGdldHMpOwogICAgICAgICBmdW5jKHB1dHMpOwogICAgICAgICBmdW5jKGlucyk7CisgICAg
ICAgIGZ1bmMoZGVsZXRlcyk7CiAgICAgfQogICAgIAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29k
ZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOwogICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5U3RhdHVzPj4+
IGdldHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
UHV0QnlJZFN0YXR1cz4+PiBwdXRzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPEluQnlJZFN0YXR1cz4+PiBpbnM7CisgICAgVmVjdG9yPHN0ZDo6cGFp
cjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RGVsZXRlQnlTdGF0dXM+Pj4gZGVsZXRlczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGU5NTgwMGFm
ZjI2Nzk1YTQyZDk0NjM5NGNiZGU1MzA5Njg4Y2RjNDYuLjIxZjAwM2ExOTBlNWNjYmJkZmEwNjg0
NWMwNmVjNjIxNTc3NmE0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTM3MDksNiArMzcwOSw0
MSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBNdWx0aURlbGV0
ZUJ5T2Zmc2V0OiB7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAg
ICAgICBUcmFuc2l0aW9uVmVjdG9yIHRyYW5zaXRpb25zOworCisgICAgICAgIC8vIE9yZGluYXJp
bHkgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCB3aXRoIGNhbGxpbmcgc2V0U2hvdWxkVHJ5Q29uc3Rh
bnRGb2xkaW5nKCkKKyAgICAgICAgLy8gYmVjYXVzZSBvZiB0aGUgZWZmZWN0IG9uIGNvbXBpbGUg
dGltZXMsIGJ1dCB0aGlzIG5vZGUgaXMgRlRMLW9ubHkuCisgICAgICAgIG1fc3RhdGUuc2V0U2hv
dWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOworCisgICAgICAgIEFic3RyYWN0VmFsdWUgYmFz
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIGlmIChub2RlLT5tdWx0aURl
bGV0ZUJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0cnVjdHVyZXMoKSkKKyAgICAgICAgICAgIGRpZEZv
bGRDbG9iYmVyU3RydWN0dXJlcygpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUt
Pm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICBjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpRGVs
ZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0IHRoaXNTZXQgPSAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICB0aGlzU2V0LmZpbHRlcihiYXNlKTsKKyAgICAgICAg
ICAgIGlmICh0aGlzU2V0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgdHJhbnNpdGlv
bnMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG5ld1N0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgIG5ld1NldC5hZGQobmV3U3RydWN0dXJlKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIG5ld1NldC5tZXJnZSh0aGlzU2V0KTsKKyAgICAgICAgfQorCisg
ICAgICAgIG9ic2VydmVUcmFuc2l0aW9ucyhjbG9iYmVyTGltaXQsIHRyYW5zaXRpb25zKTsKKyAg
ICAgICAgaWYgKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmNoYW5nZVN0cnVjdHVyZShtX2dyYXBo
LCBuZXdTZXQpID09IENvbnRyYWRpY3Rpb24pCisgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFs
aWQoZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgR2V0
RXhlY3V0YWJsZTogewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkudmFsdWUoKTsKQEAgLTQxMDYsNiArNDE0MSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxl
dGVCeVN0YXR1czoKICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6CiAgICAgICAgIGJyZWFrOwog
CkBAIC00Mjg3LDYgKzQzMjMsMTMgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogeworICAgICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFs
dWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUtPmRlbGV0ZUJ5U3Rh
dHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA1
M2IwMTQ4M2VkNDE0OTA4NDg3NTFkZGIzMzY5ZDIxNmJjYjVkNWM4Li5iZTY3MTIxY2UzMTM4NWRm
ZDk1ZTdkYjQxODliZDhjY2Y3ODk4ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTQwNyw2
ICs0MDcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKQEAgLTEyNjYsNyArMTI2Nyw4IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2Fz
ZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKLSAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJ
ZFN0YXR1czogeworICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
ICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6IHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFpc0VsaW1pbmF0ZWRBbGxvY2F0aW9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+cmVtb3ZlKG1fZ3JhcGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMWZhMGIzMTc4NzcyZWZmOWRmNDRiYzU4ZGVmODFiYzlk
MmYxYjFkLi40ZWI5N2ZmODU0YmY5NmNmZDhkMmI0MGM5ZTI0OWM1MzEzOTA1NDg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAi
REZHR3JhcGguaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlT
dGF0dXMuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkdldEJ5
U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCkBAIC0yNDgsNiArMjQ5LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIE5vZGUqIGJhc2UsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVz
JiwKICAgICAgICAgYm9vbCBpc0RpcmVjdCwgdW5zaWduZWQgaW50cnVjdGlvblNpemUpOworCisg
ICAgdm9pZCBoYW5kbGVEZWxldGVCeUlkKAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGlu
YXRpb24sIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3Rh
dHVzKTsKICAgICAKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQg
YSBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8g
Y29uZGl0aW9uIG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNo
ZWNrIGNhbiBiZSBlbWl0dGVkLgpAQCAtNDYxMyw2ICs0NjE3LDEwNCBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICBnZXR0ZXIsIG51bWJlck9mUGFyYW1ldGVy
cyAtIDEsIHJlZ2lzdGVyT2Zmc2V0LCAqdmFyaWFudC5jYWxsTGlua1N0YXR1cygpLCBwcmVkaWN0
aW9uKTsKIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRGVsZXRlQnlJZCgKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsCisgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMpCit7CisgICAgaWYg
KCFkZWxldGVCeVN0YXR1cy5pc1NpbXBsZSgpIHx8ICFkZWxldGVCeVN0YXR1cy52YXJpYW50cygp
LnNpemUoKSB8fCAhT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBzZXQo
ZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyTnVtYmVyKSwgYmFzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpID4gMSkgeworICAgICAgICBpZiAo
IW1fZ3JhcGgubV9wbGFuLmlzRlRMKCkKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGRlbGV0ZUJ5U3RhdHVzLnZh
cmlhbnRzKCkuc2l6ZSgpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xp
c3RTaXplKCkpIHsKKyAgICAgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYWRkVG9HcmFwaChG
aWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1
cykpLCBiYXNlKTsKKworICAgICAgICBib29sIGhhc0hpdCA9IGZhbHNlOworICAgICAgICBib29s
IGhhc01pc3MgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNNaXNzTm9uY29uZmlndXJhYmxlID0g
ZmFsc2U7CisKKyAgICAgICAgZm9yIChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA6
IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBpZiAodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgaGFzSGl0
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodmFyaWFudC5yZXN1bHQoKSkKKyAgICAg
ICAgICAgICAgICBoYXNNaXNzID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBoYXNNaXNzTm9uY29uZmlndXJhYmxlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICghaGFzSGl0KSB7CisgICAgICAgICAgICBpZiAoKGhhc01pc3MgJiYgIWhhc01pc3NOb25j
b25maWd1cmFibGUpIHx8ICghaGFzTWlzcyAmJiBoYXNNaXNzTm9uY29uZmlndXJhYmxlKSkgewor
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCBiYXNlU2V0OworCisgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA6IGRlbGV0ZUJ5U3RhdHVzLnZh
cmlhbnRzKCkpCisgICAgICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCkpOworCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwg
T3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGJhc2VTZXQpKSwgYmFzZSk7CisgICAgICAg
ICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbihkZWxldGVCeVN0
YXR1cy52YXJpYW50cygpWzBdLnJlc3VsdCgpKSkpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXRE
YXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpRGVsZXRlQnlPZmZzZXREYXRhLmFkZCgpOworICAg
ICAgICBkYXRhLT52YXJpYW50cyA9IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCk7CisgICAgICAg
IGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworICAgICAgICBzZXQo
ZGVzdGluYXRpb24sCisgICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpRGVsZXRlQnlPZmZzZXQs
IE9wSW5mbyhkYXRhKSwgYmFzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpID09IDEpOworICAgIERlbGV0ZUJ5
SWRWYXJpYW50IHZhcmlhbnQgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpWzBdOworCisgICAg
aWYgKCF2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVy
RGVsZXRlQnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCku
YWRkRGVsZXRlQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwg
YmFzZSk7CisgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgICAg
ICBzZXQoZGVzdGluYXRpb24sIGpzQ29uc3RhbnQoanNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0
ZUJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERl
bGV0ZUJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2Up
OworICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVj
dHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOworICAgIEFTU0VSVCh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKTsKKyAgICBBU1NFUlQodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgQVNTRVJU
KGlzVmFsaWRPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpOworCisgICAgTm9kZSogcHJvcGVydHlT
dG9yYWdlOworICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlv
bnMuYWRkKAorICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpKTsKKworICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAg
ICAgcHJvcGVydHlTdG9yYWdlID0gYmFzZTsKKyAgICBlbHNlCisgICAgICAgIHByb3BlcnR5U3Rv
cmFnZSA9IGFkZFRvR3JhcGgoR2V0QnV0dGVyZmx5LCBiYXNlKTsKKworICAgIFN0b3JhZ2VBY2Nl
c3NEYXRhKiBkYXRhID0gbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgIGRh
dGEtPm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgZGF0YS0+aWRlbnRpZmllck51bWJl
ciA9IGlkZW50aWZpZXJOdW1iZXI7CisKKyAgICBhZGRUb0dyYXBoKAorICAgICAgICBQdXRCeU9m
ZnNldCwKKyAgICAgICAgT3BJbmZvKGRhdGEpLAorICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UsCisg
ICAgICAgIGJhc2UsCisgICAgICAgIGpzQ29uc3RhbnQoSlNWYWx1ZSgpKSk7CisKKyAgICBhZGRU
b0dyYXBoKFB1dFN0cnVjdHVyZSwgT3BJbmZvKHRyYW5zaXRpb24pLCBiYXNlKTsKKyAgICBzZXQo
ZGVzdGluYXRpb24sIGpzQ29uc3RhbnQoanNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKSk7Cisg
ICAgcmV0dXJuOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgKICAgICBO
b2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3Qg
UHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKIHsKQEAgLTU5NDMs
MTUgKzYwNDUsNDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9i
YXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0
YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKLSAgICAgICAg
ICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRl
bnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0
ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAg
ICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlk
KGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfaWQpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
Y3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5VmFsPigpOwogICAgICAgICAgICAgTm9kZSog
YmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwotICAgICAgICAgICAgTm9kZSoga2V5ID0gZ2V0
KGJ5dGVjb2RlLm1fcHJvcGVydHkpOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBh
ZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBiYXNlLCBrZXkpKTsKKyAgICAgICAgICAgIE5vZGUqIHBy
b3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAgICAgYm9vbCBzaG91
bGRDb21waWxlQXNEZWxldGVCeUlkID0gZmFsc2U7CisgICAgICAgICAgICBEZWxldGVCeVN0YXR1
cyBkZWxldGVCeVN0YXR1cyA9IERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAg
ICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworCisgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyID0gMDsKKworICAgICAgICAgICAgaWYgKCFtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkK
KyAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkKKyAgICAgICAgICAgICAgICAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2VsbCkpIHsKKworICAgICAgICAgICAgICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBkZWxldGVCeVN0YXR1cy5zaW5nbGVJZGVudGlmaWVyKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXIudWlkKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIgPSBtX2dyYXBoLmlkZW50aWZpZXJz
KCkuZW5zdXJlKGlkZW50aWZpZXIudWlkKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaWRl
bnRpZmllci5pc0NlbGwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUq
IGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8oZnJvemVu
KSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNob3VsZENvbXBpbGVB
c0RlbGV0ZUJ5SWQpCisgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5t
X2RzdCwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChE
ZWxldGVCeVZhbCwgYmFzZSwgcHJvcGVydHkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2RlbF9ieV92YWwpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKaW5kZXggYjIzMThmZTAzYWVkNDFlMDMwOTU4N2U3ZGY5MDc2OWNiMDRlM2M0
OS4uNzA5NDNlMDVlZDI5YzJjOTkxMTk3YTVlMmJjNTJmMjZmNmJiODc1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTQ3Myw2ICs0NzMsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYg
cmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0xMjg0LDYgKzEyODUsMTcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihOYW1lZFByb3BlcnR5TG9j
LCBoZWFwLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0
OiB7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgcmVhZChKU09i
amVjdF9idXR0ZXJmbHkpOworICAgICAgICBBYnN0cmFjdEhlYXAgaGVhcChOYW1lZFByb3BlcnRp
ZXMsIG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcik7Cisg
ICAgICAgIHdyaXRlKGhlYXApOworICAgICAgICBpZiAobm9kZS0+bXVsdGlEZWxldGVCeU9mZnNl
dERhdGEoKS53cml0ZXNTdHJ1Y3R1cmVzKCkpCisgICAgICAgICAgICB3cml0ZShKU0NlbGxfc3Ry
dWN0dXJlSUQpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhl
YXAsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUoZ3JhcGguZnJlZXplU3Ryb25nKEpTVmFsdWUo
KSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeU9m
ZnNldDogewogICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbm9kZS0+c3RvcmFn
ZUFjY2Vzc0RhdGEoKS5pZGVudGlmaWVyTnVtYmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBlZTk4ZmFjMjMwNTM0OTkz
MDU5NDhhN2M0MDJkZjM4ZDJiZjA2ZGViLi5mMTc0NWVjYWEwMTVhOTZkZWJmMGRjMWE5YmFhOTI4
MTIxZDM5NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcApAQCAtODYsNiArODYsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgog
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1
czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAvLyBUaGVzZSBkbyBj
bG9iYmVyIG1lbW9yeSwgYnV0IG5vdGhpbmcgdGhhdCBpcyBvYnNlcnZhYmxlLiBJdCBtYXkgYmUg
bmljZSB0byBzZXBhcmF0ZSB0aGUKICAgICAgICAgLy8gaGVhcHMgaW50byB0aG9zZSB0aGF0IGFy
ZSBvYnNlcnZhYmxlIGFuZCB0aG9zZSB0aGF0IGFyZW4ndCwgYnV0IHdlIGRvbid0IGRvIHRoYXQg
cmlnaHQgbm93LgogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODQ0MApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCBiNDNmN2NmNTRlMTIxNzQ3MTc2ZGRj
ZTk2NWI2YzgxOGYyOTE2MTg1Li4xMzc5ZmFjODMwNmMzZTIyOGNjOWRjMjI3NGI1NGVkODVmNDA0
MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcApAQCAtNTA5LDYgKzUwOSwzNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAg
ICAgICAgICBFZGdlIGJhc2VFZGdlID0gbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgICAgICAgICAg
Tm9kZSogYmFzZSA9IGJhc2VFZGdlLm5vZGUoKTsKKyAgICAgICAgICAgICAgICBNdWx0aURlbGV0
ZUJ5T2Zmc2V0RGF0YSYgZGF0YSA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCk7CisK
KyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9k
ZShiYXNlKTsKKworICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleElu
QmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRl
IGJlZm9yZS4KKyAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0
IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4K
KworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLnZhcmlhbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50JiB2
YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWJh
c2VWYWx1ZS5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS52YXJpYW50c1tpLS1d
ID0gZGF0YS52YXJpYW50cy5sYXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZh
cmlhbnRzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS52YXJp
YW50cy5zaXplKCkgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbWl0RGVsZXRlQnlPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5C
bG9jaywgbm9kZSwgYmFzZVZhbHVlLCBkYXRhLnZhcmlhbnRzWzBdLCBkYXRhLmlkZW50aWZpZXJO
dW1iZXIpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2Fz
ZSBNYXRjaFN0cnVjdHVyZTogewogICAgICAgICAgICAgICAgIEVkZ2UgYmFzZUVkZ2UgPSBub2Rl
LT5jaGlsZDEoKTsKQEAgLTEzMDgsNiArMTMzOCw0NCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGNoaWxkRWRnZSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGVtaXREZWxldGVC
eU9mZnNldCh1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0
VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIpCisgICAgeworICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9
IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCBvcmlnaW4u
ZXhpdE9LKTsKKyAgICAgICAgYWRkQmFzZUNoZWNrKGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZh
bHVlLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsK
KyAgICAgICAgbm9kZS0+Y2hpbGQxKCkuc2V0VXNlS2luZChLbm93bkNlbGxVc2UpOworCisgICAg
ICAgIGlmICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgbV9ncmFwaC5j
b252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkpOworICAg
ICAgICAgICAgbm9kZS0+b3JpZ2luID0gbm9kZS0+b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVHJhbnNpdGlvbiogdHJh
bnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgICAgICBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpLCBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKworICAgICAgICBFZGdlIHBy
b3BlcnR5U3RvcmFnZTsKKworICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZz
ZXQoKSkpCisgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gRWRnZShtX2luc2VydGlv
blNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IEdldEJ1dHRlcmZseSwgb3JpZ2luLCBub2RlLT5jaGlsZDEoKSkpOworCisgICAgICAgIFN0b3Jh
Z2VBY2Nlc3NEYXRhJiBkYXRhID0gKm1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsK
KyAgICAgICAgZGF0YS5vZmZzZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAgICAgICBkYXRhLmlk
ZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOworCisgICAgICAgIE5vZGUqIGNsZWFy
VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKGluZGV4SW5CbG9jaywgU3BlY05vbmUs
IEpTQ29uc3RhbnQsIG9yaWdpbiwgT3BJbmZvKG1fZ3JhcGguZnJlZXplU3Ryb25nKEpTVmFsdWUo
KSkpKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGlu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIFB1dEJ5T2Zmc2V0LCBvcmlnaW4sIE9wSW5mbygmZGF0YSks
IHByb3BlcnR5U3RvcmFnZSwgbm9kZS0+Y2hpbGQxKCksIEVkZ2UoY2xlYXJWYWx1ZSkpOworICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgaW5kZXhJbkJsb2Nr
LCBTcGVjTm9uZSwgUHV0U3RydWN0dXJlLCBvcmlnaW4ud2l0aEludmFsaWRFeGl0KCksIE9wSW5m
byh0cmFuc2l0aW9uKSwKKyAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgbV9n
cmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkp
OworICAgICAgICBub2RlLT5vcmlnaW4gPSBub2RlLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7
CisgICAgfQogICAgIAogICAgIHZvaWQgYWRkQmFzZUNoZWNrKAogICAgICAgICB1bnNpZ25lZCBp
bmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKaW5kZXggNTVkM2M4ZmQ1ZGNmOGZhMmVmYmEzN2Y5NmRjOTA5OWQ0OTcyNTE4MS4uOTJj
MDM4ZjA1OTAyZWU4YzMxMGM1YTExM2Q2NDk1ZDA1MDUxMGNlMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg2LDYgKzE4Niw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrVmFyYXJnczoKICAgICBjYXNl
IENoZWNrVHlwZUluZm9GbGFnczoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CisgICAgY2Fz
ZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBEb3Vi
bGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKQEAgLTI0NSw2ICsyNDYsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIERhdGVHZXRJbnQz
Mk9yTmFOOgogICAgIGNhc2UgRGF0ZUdldFRpbWU6CiAgICAgY2FzZSBEYXRhVmlld0dldEludDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGU5N2Rl
MTBmNmY0Y2RjMTViYWVmYjEwYjdlYzYwNjI4Mjc4MzU5NTUuLjE0MmQ3OGI4YzQzNjgxZmMzM2Zm
ZjMwYjZlOWI4ZDI4ZGI4OTllNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcApAQCAtMTgxNSw2ICsxODE1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OiAgeworICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJbnRyb2R1Y2UgYSB2YXJpYW50IG9mIE1hdGNoU3Ry
dWN0dXJlIHRoYXQgZG9lc24ndCBkbyBhIGNlbGwgY2hlY2suCkBAIC0yNTgwLDYgKzI1ODUsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgor
ICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA2
OWUyOTAwYWVkZDY5ZDI0NTVmMjUxNDMzMmZjZDk0NTc1OGUxYjBmLi5hZjI4MjY3M2U0NWMyNzFl
Zjg1M2Q5YzIyZWJmOWFhNzE2M2U1ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcApAQCAtMzAyLDYgKzMwMiwxMiBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeFN0ciwgTm9kZSogbm9kZSwgRHVtcENvbnRleAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkK
ICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRhdGEudmFyaWFudHNbaV0s
IGNvbnRleHQpKTsKICAgICB9CisgICAgaWYgKG5vZGUtPmhhc011bHRpRGVsZXRlQnlPZmZzZXRE
YXRhKCkpIHsKKyAgICAgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEmIGRhdGEgPSBub2RlLT5t
dWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpOworICAgICAgICBvdXQucHJpbnQoY29tbWEsICJpZCIs
IGRhdGEuaWRlbnRpZmllck51bWJlciwgInsiLCBpZGVudGlmaWVycygpW2RhdGEuaWRlbnRpZmll
ck51bWJlcl0sICJ9Iik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLnZh
cmlhbnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRl
eHQoZGF0YS52YXJpYW50c1tpXSwgY29udGV4dCkpOworICAgIH0KICAgICBpZiAobm9kZS0+aGFz
TWF0Y2hTdHJ1Y3R1cmVEYXRhKCkpIHsKICAgICAgICAgZm9yIChNYXRjaFN0cnVjdHVyZVZhcmlh
bnQmIHZhcmlhbnQgOiBub2RlLT5tYXRjaFN0cnVjdHVyZURhdGEoKS52YXJpYW50cykKICAgICAg
ICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KCp2YXJpYW50LnN0cnVjdHVyZS5nZXQo
KSwgY29udGV4dCksICI9PiIsIHZhcmlhbnQucmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCA5NDdlZmFhYmE5ZTY0OTZiM2IwNWM2ZjU1MTQyYWI3Yzc3YjViNWEy
Li4yYzI1MTk2ZmIwNWM0OTc3OTRiNWRkZmM2NjFkYzc3ZmYxYTBlMGFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0xMTAwLDYgKzExMDAsNyBAQCBwdWJsaWM6CiAgICAg
QmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9mZnNldERh
dGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZzZXREYXRh
PiBtX211bHRpUHV0QnlPZmZzZXREYXRhOworICAgIEJhZzxNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YT4gbV9tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8TWF0Y2hTdHJ1Y3R1cmVEYXRh
PiBtX21hdGNoU3RydWN0dXJlRGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+
IG1fY2FsbFZhcmFyZ3NEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAKaW5kZXggYjkyODgxMGUxMDE1NTNiMTlhZjUxMzQ0MmMwM2ViZWVjMDQ4MGYyYi4uMWNjYThi
MmFjNDFjYmU3ZjQ5NmQzYzk2YTdiOGRkMTAwMDJkNTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDksNiArMTA5LDcgQEAgRXhpdE1vZGUgbWF5RXhp
dEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNh
c2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcAppbmRleCBkY2IyYjU5ZGNhY2JiMjE5M2E4MmEwYjk3MzMzOTlmMDU3NDJh
NDM4Li5mNzNhZjYwMDExYzE1MDFkMDgwYjFlZTA2YmM3YjBhYTY1YzM2ZDE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKQEAgLTU3LDYgKzU3LDE1IEBAIGJvb2wgTXVsdGlQ
dXRCeU9mZnNldERhdGE6OnJlYWxsb2NhdGVzU3RvcmFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitib29sIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhOjp3cml0ZXNTdHJ1Y3R1cmVz
KCkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YXJpYW50cy5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgaWYgKHZhcmlhbnRzW2ldLndyaXRlc1N0cnVjdHVyZXMoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQnJh
bmNoVGFyZ2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFibG9j
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTM0NTViNWMyOWYwNzBmZWYy
Zjk5MTk1MmJjZmYwMDdmZWE5MTcyNi4uMDk4NmY5YTcxZmNjMTc5ODc1N2Y0YWVlZGQ5YWI0NjI5
MWM4ZjRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTQ3LDYgKzQ3LDcg
QEAKICNpbmNsdWRlICJERkdUcmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgog
I2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5SWRW
YXJpYW50LmgiCiAjaW5jbHVkZSAiR2V0QnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKQEAgLTkyLDYgKzkzLDEzIEBAIHN0cnVjdCBN
dWx0aVB1dEJ5T2Zmc2V0RGF0YSB7CiAgICAgYm9vbCByZWFsbG9jYXRlc1N0b3JhZ2UoKSBjb25z
dDsKIH07CiAKK3N0cnVjdCBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSB7CisgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlcjsKKyAgICBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDI+IHZhcmlh
bnRzOworCisgICAgYm9vbCB3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3Q7Cit9OworCiBzdHJ1Y3Qg
TWF0Y2hTdHJ1Y3R1cmVWYXJpYW50IHsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZTsKICAgICBib29sIHJlc3VsdDsKQEAgLTIwMTQsNiArMjAyMiwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChoYXNNdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpKTsKICAgICAgICAgcmV0dXJuICpt
X29wSW5mby5hczxNdWx0aVB1dEJ5T2Zmc2V0RGF0YSo+KCk7CiAgICAgfQorCisgICAgYm9vbCBo
YXNNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9
PSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OworICAgIH0KKworICAgIE11bHRpRGVsZXRlQnlPZmZzZXRE
YXRhJiBtdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFz
TXVsdGlEZWxldGVCeU9mZnNldERhdGEoKSk7CisgICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8
TXVsdGlEZWxldGVCeU9mZnNldERhdGEqPigpOworICAgIH0KICAgICAKICAgICBib29sIGhhc01h
dGNoU3RydWN0dXJlRGF0YSgpCiAgICAgewpAQCAtMjk3Niw2ICsyOTk1LDE3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFB1dEJ5SWRTdGF0dXMqPigpOwogICAgIH0KIAor
ICAgIGJvb2wgaGFzRGVsZXRlQnlTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gRmlsdGVyRGVsZXRlQnlTdGF0dXM7CisgICAgfQorCisgICAgRGVsZXRlQnlTdGF0dXMqIGRl
bGV0ZUJ5U3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNEZWxldGVCeVN0YXR1cygp
KTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPERlbGV0ZUJ5U3RhdHVzKj4oKTsKKyAgICB9
CisKICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAgIHsKICAgICAg
ICAgaWYgKCFjaGlsZDEoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApp
bmRleCBlMjExZWE3N2Q4NTQxOTliYjg0NjNmYWVjMzdiZjVjNDFjNWY5N2U3Li5kMTM2NzAxZTdi
NzY2ZjQ2ODAzMzliMDE1MTZmZjBmZDFlMGM0NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCkBAIC0yNTIsNiArMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpR2V0QnlPZmZzZXQsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAg
IG1hY3JvKEdldFZlY3Rvckxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0
VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1bHRJbnQzMikgXApAQCAtNTI2LDYgKzUyNyw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhGaWx0ZXJHZXRC
eVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1
cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGaWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIC8qIERhdGEgdmlldyBhY2Nlc3MgKi8gXAogICAgIG1hY3JvKERh
dGFWaWV3R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSAvKiBUaGUgZ2V0
cyBhcmUgbXVzdCBnZW5lcmF0ZSBmb3Igbm93IGJlY2F1c2UgdGhleSBkbyBib3VuZHMgY2hlY2tz
ICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEZsb2F0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZVJlc3VsdERvdWJsZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKaW5kZXggMDVhY2RmMjM4
NzY5NzNmODhlODJiOWE3M2IzNDllZTc3OWI1Yjk4NC4uZDAwZWE2MWVhMjk1ZDE2NzAzZjU2NjU2
OGZhZTk5NzE2NTFhMTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0xMjIwLDYg
KzEyMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTI1NzAsNiArMjU3MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgICAgICAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5pc1BoYW50b21BbGxvY2F0
aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmVXaXRob3V0Q2hlY2tz
KCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCAyODg4NThiMzhjMTZhNjVhOGM4ZWJkYjlkNDM3MDEyODM0NzJhNTBhLi44ZjE5MjYwODA1NjY5
NDdiYWJhMDJmMTc3NmI1NDA5NGIxMGUwYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
OTg0LDYgKzk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBEZWxldGVC
eVZhbDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgorICAgICAgICBjYXNlIE11bHRpRGVsZXRl
QnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICAgICAgY2FzZSBDb21wYXJl
TGVzczoKICAgICAgICAgY2FzZSBDb21wYXJlTGVzc0VxOgpAQCAtMTM5NSw2ICsxMzk2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAg
ICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBDbGVhckNhdGNo
TG9jYWxzOgogICAgICAgICBjYXNlIERhdGFWaWV3U2V0OgogICAgICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCBiYWRmZTFiMmQxNDI5YjJlMDU2NGU2MDFhMGM3ZmM5NjY0YjU1ZWFjLi5kNmU3Yzll
MzA4NTcyMjRjODI1ODU2ODJjYWI2ZDA3YWU3ZDFlMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMzYxLDYgKzM2MSw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGVzZSB0
byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdoZXJlIHdlIHB1dCB0aGVtLCBzaW5jZSB3
ZSB3YW50IHRoZW0KICAgICAgICAgLy8gdG8gY2FwdHVyZSAicHJvZmlsaW5nIiBhdCB0aGUgcG9p
bnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIgcHV0IHRoZW0uCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTYwOCw2ICs2MDksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAg
IGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNl
IE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNh
c2UgR2V0RW51bWVyYWJsZUxlbmd0aDoKICAgICBjYXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAg
ICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggYjAxOWQ4NWRmOWMyNWIx
MzA4OTkyYWU2NDdiNWVjOGEyNzUzYmM2Ni4uZmRjOWJiZTMyYTUyMWY4Nzk5NTk0MjYyZTM2MGQw
YzM4ZTU3Yjc4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MTkwLDYgKzQxOTAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgbV9pbnRlcnByZXRl
ci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNDIwOCw2ICs0MjA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9m
ZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5
T2Zmc2V0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAg
ICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYjA3Y2IyNTc1ZDEwNjI3NzhkNGViMDc0
ZGZjNWZhNjE2NjNkZDk2MC4uZjAwM2EwOGMyY2ExZWFlNGUzYWE0MWY2MTcxMjE4MTIyNTFmMDRm
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC01MjU1LDYgKzUyNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1
cyhub2RlKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTI2
OSw2ICs1MjcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNl
IE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNh
c2UgRmlhdEludDUyOgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgIGNhc2UgQm90dG9tVmFs
dWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmNwcAppbmRleCA3YzdhYmU4M2UyM2E1ZDg4YTMyMDgzYTUwZWRmMzRkMzZj
ZDYzNjliLi45MmQwYzhmMWM0NTYzNzM5MGMwNjM0YTgxNTgyNDI4NWU5N2EzZWIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAKQEAgLTI4Nyw2ICsyODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAg
ICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2Ug
TXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQg
dGhlc2UgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIApAQCAtMzYyLDYgKzM2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBN
b3ZIaW50OgogICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICAgICAg
ICAgICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBNdWx0
aURlbGV0ZUJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBjb3VudCB0aGVz
ZSB1c2VzLgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmluZGV4IDNhNzc3MTE0
NWM3NjBiMzQ4MmU3ZTFhYzliNjQ5OTAxZGZmMTlkNWEuLjBkNjVkOGY4OWFlYzNkNTk0MmQyY2Y4
M2Q2Y2VkOGExYmZmMzk4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCkBAIC0zMTEsNiArMzExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigp
LT5kZmdTaG91bGRXYXRjaCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpRGVsZXRl
QnlPZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpRGVs
ZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICF2YXJpYW50Lm5ld1N0cnVjdHVyZSgpIHx8ICF2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpLT5kZmdTaG91bGRXYXRjaCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXpl
TmV3T2JqZWN0OgogICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmpl
Y3Qgb3IgSlNBcnJheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IDc0ZWE2MThlOTAxMTI5YTU3ZTJjODNi
Yjg5MmE3NWI3YjgwNjMzYjcuLjBjMzVhNTM2NWNjNDZlZjNjNzg5OTQ4ZjRkMmU2MGNjZjAxNzZi
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0Zvcndh
cmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdz
Rm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtMTk4LDYgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAg
ICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OiB7CkBAIC0zOTksNiArNDAwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSA9PSBjYW5kaWRhdGUpCiAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dyYXBoKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCA1YzY5ZDFkMzhjMWM2MTA1OTlmZDMwMjk5NzM0MzYwY2IyMjdhY2IyLi5lMWY1ODlmMjcz
NDNiZmY5MzYyMTYxODhkYWUzYjVjODYzNjg2OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMzMsNiArMjMzLDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb1RoaXM6CiAg
ICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAg
ICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBUb1ByaW1pdGl2ZToKICAgICBj
YXNlIFRvUHJvcGVydHlLZXk6CiAgICAgY2FzZSBUaHJvdzoKQEAgLTM5Miw2ICszOTMsNyBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
IGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgY2FzZSBDcmVh
dGVHZW5lcmF0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggODAzNjM5MDdiOWUxNzI4MzI3NWIyN2E2OTUzMzE4ZGM0ZTY3YjU5Yi4uMWY0
ZTBhM2E4OTQ1ZDUyYzJmN2YwNjY0NjlkMDRiMTRiYmJmNTg5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTE3Nyw2ICsxMTc3LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgogICAgICAgICAgICAgY29t
cGlsZU11bHRpUHV0QnlPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IE11bHRpRGVsZXRlQnlPZmZzZXQ6CisgICAgICAgICAgICBjb21waWxlTXVsdGlEZWxldGVCeU9m
ZnNldCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
CiAgICAgICAgICAgICBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTU2OSw2ICsxNTcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRC
eVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICAgICAgICAgIGNvbXBpbGVGaWx0ZXJJQ1N0YXR1cygpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgRGF0ZUdldEludDMyT3JOYU46CkBAIC04MTE4LDYgKzgxMjIsMTA2IEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVNdWx0aURlbGV0ZUJ5T2Zmc2V0
KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEmIGRhdGEgPSBtX25vZGUtPm11bHRp
RGVsZXRlQnlPZmZzZXREYXRhKCk7CisKKyAgICAgICAgdW5zaWduZWQgbWlzc0NvbmZpZ3VyYWJs
ZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIG1pc3NOb25jb25maWd1cmFibGUgPSAwOworCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAg
ICAgICAgICAgIGlmICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAg
IGlmICh2YXJpYW50LnJlc3VsdCgpKQorICAgICAgICAgICAgICAgICAgICArK21pc3NDb25maWd1
cmFibGU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICArK21pc3NO
b25jb25maWd1cmFibGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB1bnNp
Z25lZCB1bmlxdWVDYXNlQ291bnQgPSBkYXRhLnZhcmlhbnRzLnNpemUoKTsKKyAgICAgICAgaWYg
KG1pc3NDb25maWd1cmFibGUpCisgICAgICAgICAgICB1bmlxdWVDYXNlQ291bnQgLT0gbWlzc0Nv
bmZpZ3VyYWJsZSAtIDE7CisgICAgICAgIGlmIChtaXNzTm9uY29uZmlndXJhYmxlKQorICAgICAg
ICAgICAgdW5pcXVlQ2FzZUNvdW50IC09IG1pc3NOb25jb25maWd1cmFibGUgLSAxOworICAgICAg
ICBpbnQgdHJ1ZUJsb2NrID0gbWlzc0NvbmZpZ3VyYWJsZSA/IHVuaXF1ZUNhc2VDb3VudCAtIDEg
OiAtMTsKKyAgICAgICAgaW50IGZhbHNlQmxvY2sgPSBtaXNzTm9uY29uZmlndXJhYmxlID8gdW5p
cXVlQ2FzZUNvdW50IC0gMSAtICEhbWlzc0NvbmZpZ3VyYWJsZSA6IC0xOworCisgICAgICAgIFZl
Y3RvcjxMQmFzaWNCbG9jaywgMj4gYmxvY2tzKHVuaXF1ZUNhc2VDb3VudCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGJsb2Nrcy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBibG9ja3Nb
aV0gPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBleGl0ID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZSwgMj4gY2FzZXM7CisgICAgICAg
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gZGF0YS52YXJpYW50cy5zaXplKCksIGJsb2NrID0gMDsgaS0tOykgeworICAgICAgICAgICAg
RGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBiYXNlU2V0LmFkZChzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpCisgICAgICAg
ICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVy
ZSksIGJsb2Nrc1tibG9jaysrXSwgV2VpZ2h0KDEpKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZUlEKHN0cnVj
dHVyZSksIGJsb2Nrc1t2YXJpYW50LnJlc3VsdCgpID8gdHJ1ZUJsb2NrIDogZmFsc2VCbG9ja10s
IFdlaWdodCgxKSkpOworICAgICAgICB9CisgICAgICAgIGJvb2wgc3RydWN0dXJlc0NoZWNrZWQg
PSBtX2ludGVycHJldGVyLmZvck5vZGUobV9ub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihiYXNlU2V0KTsKKyAgICAgICAgZW1pdFN3aXRjaEZvck11bHRpQnlPZmZzZXQoYmFz
ZSwgc3RydWN0dXJlc0NoZWNrZWQsIGNhc2VzLCBleGl0KTsKKworICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOworCisgICAgICAgIFZlY3RvcjxWYWx1ZUZy
b21CbG9jaywgMj4gcmVzdWx0czsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZh
cmlhbnRzLnNpemUoKSwgYmxvY2sgPSAwOyBpLS07KSB7CisgICAgICAgICAgICBEZWxldGVCeUlk
VmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIGlmICghdmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW2Jsb2NrXSwgYmxvY2sgKyAxIDwgYmxvY2tzLnNp
emUoKSA/IGJsb2Nrc1tibG9jayArIDFdIDogZXhpdCk7CisKKyAgICAgICAgICAgIGlmICh2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2U7CisK
KyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpCisg
ICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBiYXNlOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSA9IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9oZWFw
cy5KU09iamVjdF9idXR0ZXJmbHkpOworCisgICAgICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eSht
X291dC5pbnQ2NFplcm8sIHN0b3JhZ2UsIGRhdGEuaWRlbnRpZmllck51bWJlciwgdmFyaWFudC5v
ZmZzZXQoKSk7CisKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLmlubGluZVR5cGVGbGFncygpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50
Lm9sZFN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMigK
KyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpLCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1
Y3R1cmVJRCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1f
b3V0LmFuY2hvcih2YXJpYW50LnJlc3VsdCgpID8gbV9vdXQuYm9vbGVhblRydWUgOiBtX291dC5i
b29sZWFuRmFsc2UpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAg
ICAgICAgICAgICsrYmxvY2s7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWlzc05vbmNvbmZp
Z3VyYWJsZSkgeworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW2ZhbHNlQmxvY2td
KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFu
RmFsc2UpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtaXNzQ29uZmlndXJhYmxlKSB7CisgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhibG9ja3NbdHJ1ZUJsb2NrXSwgZXhpdCk7CisgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpKTsKKyAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGV4aXQsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIGlmICghc3RydWN0dXJlc0NoZWNrZWQpCisg
ICAgICAgICAgICBzcGVjdWxhdGUoQmFkQ2FjaGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQu
Ym9vbGVhblRydWUpOworICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRCb29sZWFu
KG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0cykpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBp
bGVNYXRjaFN0cnVjdHVyZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRl
eCAxYTBjZjU5ZmZmZDNjMGEzYTNkZjI2NTNlYTEzM2E4NThlNDYwMWMyLi4zZWQzMDQ5NTIyYjAy
MGZjYTU2YjYyNDhkNDZmODk0ZmJmOTE1MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aApAQCAtNDQ0LDExICs0NDQsMTEgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6ZGVsZXRlUHJvcGVydHkoCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7CiAKLSAgICBpZiAodGhpc09iamVjdC0+
aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIHRydWUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwot
Ci0gICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKKyAgICBpZiAocGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisg
ICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRydWUsIHR5
cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggNDVmNDIzNmExYmI3NzRl
YmI1MjMwNzcyNmU3ZWZkZmU4NGJhZDEwMS4uZjBiMGVhZjA4YmMwNWYzZjQ1NWFhMTdiYTQ1ZDA0
NTA2ZDAwOWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cApAQCAtMjAxMSwxMiArMjAxMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZkZWZlcnJl
ZFdhdGNocG9pbnRGaXJlKTsKICAgICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7Ci0gICAg
ICAgICAgICBpZiAoIXN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0lu
ZGV4aW5nSGVhZGVyKHRoaXNPYmplY3QpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHRoaXNP
YmplY3QtPm1fYnV0dGVyZmx5KTsKLSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5udWtlU3Ry
dWN0dXJlQW5kU2V0QnV0dGVyZmx5KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLCBudWxs
cHRyKTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwotICAgICAgICAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1heE9mZnNldCgpID09IGludmFsaWRPZmZzZXQpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSB8fCAhdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5zZXRTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApp
bmRleCAzMjBhNDdhN2I4MzQ1OWEyYjhkOTdiMjFkNDQ1N2ExODFhYTI4ZWVmLi5hMDVkZjg3YjZl
ZDIwOGFjODIzODgwZTNmYTQwMTdlNzUwMDE3NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNTMyLDcgKzUzMiw2IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsKLSAg
ICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcihib29sJiBtdXN0Q2hlY2tDZWxsKSBjb25zdDsK
ICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggM2RjMTdiNzMzNTk5NGU4M2UxMTEwMmQwZTllY2Fi
MGQ2ZTQ5ODA1Ny4uMTVkYWQyNmY5Yzc4MTg5YzNlZGZhOWIxODNhYzczZWE2MTI4NTM4NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApA
QCAtMjU2LDE5ICsyNTYsNiBAQCBpbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVh
ZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpT
QXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9
CiAKLWlubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2ZUluZGV4aW5nSGVhZGVyKGJvb2wmIG11
c3RDaGVja0NlbGwpIGNvbnN0Ci17Ci0gICAgbXVzdENoZWNrQ2VsbCA9IGZhbHNlOwotICAgIGlm
IChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9i
LnR5cGUoKSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtdXN0Q2hlY2tDZWxsID0g
dHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQog
ewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSAmJiBnbG9i
YWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0ZTMxNDlkZTNmMGU1Y2VlMDhmYTI4
OGIwZGQ4OWU4NTdiMGZkMTZiLi5lN2ZkZDhjMjBlYWI2NjVhMzIxOTE4N2UzYmZiOTllMjhhZDdl
MzJkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAzLTEzICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9t
aWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBkZWxldGVCeUlkIHRvIGJlIGNhY2hl
ZCBpbiB0aGUgREZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDg2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5n
LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQu
YmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3guZG9BbGxvYzEpOgorICAgICAg
ICAobm9JbmxpbmUuZG9BbGxvYzEpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5dmFy
aWFudC1kZWxldGUtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAg
ICAgKGJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LnBvbHl2YXJpYW50KToK
KyAgICAgICAgKGRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2MxLmRvQWxsb2My
KToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2MyKToKKyAgICAgICAgKiBzdHJlc3MvZGVsZXRl
LXByb3BlcnR5LWRmZy1pbmxpbmUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAg
ICAgKG5vSW5saW5lLmFzc2VydC5hc3NlcnRfdGhyb3dzKToKKyAgICAgICAgKG5vSW5saW5lLmFz
c2VydF90aHJvd3MuYmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3gudGVzdFNp
bmdsZVN0cnVjdHVyZS5kb0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5ibGFja2JveC50ZXN0
U2luZ2xlU3RydWN0dXJlKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUu
dGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS5kb0RlbGV0ZTIpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdFNpbmdsZVN0cnVjdHVyZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLmRvQWxsb2MyKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0
cnVjdHVyZSk6CisgICAgICAgIChub0lubGluZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLnRl
c3RFeGl0LmRvRGVsZXRlMyk6CisgICAgICAgIChub0lubGluZS50ZXN0SW5saW5lU2luZ2xlU3Ry
dWN0dXJlLnRlc3RFeGl0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RFeGl0LnRlc3RTaW5nbGVT
dHJ1Y3R1cmVNaXNzLmRvQWxsb2M0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RFeGl0LnRlc3RT
aW5nbGVTdHJ1Y3R1cmVNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1
cmVNaXNzLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0LnN0cmluZ19hcHBlYXJlZF9oZXJl
LmRvQWxsb2M1KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzLnRl
c3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5n
bGVTdHJ1Y3R1cmVNaXNzU3RyaWN0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJh
YmxlLmRvQWxsb2M2KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNz
U3RyaWN0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlLnRlc3RTaW5n
bGVTdHJ1Y3R1cmVFbXB0eS5kb0FsbG9jNyk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xl
U3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZS50ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5LnRlc3RQb2x5bW9ycGhp
Yy5kb0RlbGV0ZTgpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5
LnRlc3RQb2x5bW9ycGhpYyk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWMudGVz
dFBvbHl2YXJpYW50LmRvRGVsZXRlOSk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBo
aWMudGVzdFBvbHl2YXJpYW50LnBvbHl2YXJpYW50KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQ
b2x5bW9ycGhpYy50ZXN0UG9seXZhcmlhbnQpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHl2
YXJpYW50LnRlc3RDb25zdGFudEZvbGRpbmcuZG9EZWxldGUxMCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0UG9seXZhcmlhbnQudGVzdENvbnN0YW50Rm9sZGluZyk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0Q29uc3RhbnRGb2xkaW5nLnRlc3RPYmplY3RTaW5raW5nLmRvQWxsb2MxMSk6CisgICAg
ICAgIChub0lubGluZS50ZXN0Q29uc3RhbnRGb2xkaW5nLnRlc3RPYmplY3RTaW5raW5nKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RPYmplY3RTaW5raW5nLnRlc3RQcm94eS5kb0FsbG9jMTIpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdE9iamVjdFNpbmtpbmcudGVzdFByb3h5Lm5vSW5saW5lLmRv
RGVsZXRlMTIpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iamVjdFNpbmtpbmcudGVzdFByb3h5
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQcm94eS50ZXN0VHlwZWRBcnJheS5kb0RlbGV0ZTEy
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQcm94eS50ZXN0VHlwZWRBcnJheSk6CisgICAgICAg
IChub0lubGluZS50ZXN0VHlwZWRBcnJheS50ZXN0TWlzc01peGVkLmRvRGVsZXRlMTMpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdFR5cGVkQXJyYXkudGVzdE1pc3NNaXhlZCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0TWlzc01peGVkLnRlc3RNaXNzTm9uTWl4ZWQuZG9EZWxldGUxNCk6CisgICAg
ICAgIChub0lubGluZS50ZXN0TWlzc01peGVkLnRlc3RNaXNzTm9uTWl4ZWQpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdE1pc3NOb25NaXhlZC50ZXN0QnlWYWwuZG9EZWxldGUxNSk6CisgICAgICAg
IChub0lubGluZS50ZXN0TWlzc05vbk1peGVkLnRlc3RCeVZhbCk6CisKIDIwMjAtMDMtMDQgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmRsZSBhbiBvdXQgb2Yg
bWVtb3J5IGVycm9yIHdoaWxlIGNvbnN0cnVjdGluZyB0aGUgQnl0ZWNvZGVHZW5lcmF0b3IuCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2Nh
dGlvbi1zaW5raW5nLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5
LWFsbG9jYXRpb24tc2lua2luZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjYzNDY0ZjMxNzdjYjU5ZmE2Y2Y5
MjRlMTQyMjc0NjU5NDA0MTM1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcwpAQCAtMCwwICsxLDI2
IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIgorCitmdW5j
dGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lubGluZShhc3NlcnQpCisK
K2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4geAorfQorbm9JbmxpbmUoYmxhY2ti
b3gpCisKK2Z1bmN0aW9uIGRvQWxsb2MxKCkgeworICAgIGxldCBvYmogPSB7fQorICAgIG9iai54
ID0gNQorICAgIG9iai55ID0gNworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgYXNz
ZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2Mx
KQorCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDAwOyArK2kpIHsKKyAgICBkb0FsbG9jMSgp
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1kZWxl
dGUtcHJvcGVydHkuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1kZWxl
dGUtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3Y2JjYmQ2OTliM2IwMzI2N2NiMDFmMTI3YTBm
NTIyYzFlYjVkMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3Bv
bHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDQxIEBACisvL0Agc2tpcCBp
ZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIgorCitmdW5jdGlvbiBhc3NlcnQoY29u
ZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YXNzZXJ0aW9uIGZhaWxlZCIpCit9CisKK2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1
cm4geAorfQorbm9JbmxpbmUoYmxhY2tib3gpCisKK2Z1bmN0aW9uIHBvbHl2YXJpYW50KHgpIHsK
KyAgICBhc3NlcnQoZGVsZXRlIHgueCkKK30KKworZnVuY3Rpb24gZG9BbGxvYzEoKSB7CisgICAg
bGV0IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLnkgPSA3CisgICAgb2JqLnkgPSBi
bGFja2JveChvYmoueSkKKyAgICBwb2x5dmFyaWFudChvYmopCisgICAgcmV0dXJuIG9iai55Cit9
Citub0lubGluZShkb0FsbG9jMSkKKworZnVuY3Rpb24gZG9BbGxvYzIoKSB7CisgICAgbGV0IG9i
aiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLmIgPSA5CisgICAgb2JqLnkgPSA3CisgICAg
b2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICBwb2x5dmFyaWFudChvYmopCisgICAgcmV0dXJu
IG9iai55Cit9Citub0lubGluZShkb0FsbG9jMikKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDAwMDsgKytpKSB7CisgICAgZG9BbGxvYzEoKQorICAgIGRvQWxsb2MyKCkKK30KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNiZWU3
YmNjMTJjOWQyZGQ3YTQyODE2OTUxNTBmM2ZmZGIzNmExMgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzCkBAIC0wLDAgKzEsNDA5
IEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lubGluZShh
c3NlcnQpCisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZikgeworICAgIHRyeSB7CisgICAgICAg
IGYoKQorICAgIH0gY2F0Y2ggeworICAgICAgICByZXR1cm4KKyAgICB9CisgICAgdGhyb3cgbmV3
IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30KK25vSW5saW5lKGFzc2VydF90aHJvd3MpCisK
K2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4geAorfQorbm9JbmxpbmUoYmxhY2ti
b3gpCisKK2Z1bmN0aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1cmUoKSB7CisgICAgZnVuY3Rpb24gZG9B
bGxvYzEoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAg
ICAgb2JqLnkgPSA3CisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFz
c2VydChkZWxldGUgb2JqLngpCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lu
bGluZShkb0FsbG9jMSkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7
CisgICAgICAgIGRvQWxsb2MxKCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xlU3RydWN0
dXJlKQorCitmdW5jdGlvbiB0ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKCkgeworICAgIGZ1bmN0
aW9uIGRvRGVsZXRlMihvKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgby54KQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGRvQWxsb2MyKCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAg
b2JqLnggPSA1CisgICAgICAgIG9iai55ID0gNworICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9i
ai55KQorICAgICAgICBkb0RlbGV0ZTIob2JqKQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9
CisgICAgbm9JbmxpbmUoZG9BbGxvYzIpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyAr
K2kpIHsKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgZjogNCB9KQorICAgICAgICBkb0RlbGV0ZTIo
eyBpLCBlOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGksIGQ6IDQgfSkKKyAgICAgICAgZG9E
ZWxldGUyKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBiOiA0IH0pCisgICAg
ICAgIGRvRGVsZXRlMih7IGksIGE6IDQgfSkKKyAgICAgICAgZG9BbGxvYzIoKQorICAgIH0KKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2My
KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKQorCitmdW5j
dGlvbiB0ZXN0RXhpdCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTMob2JqKSB7CisgICAgICAg
IGFzc2VydChkZWxldGUgb2JqLnkpCisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMykKKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUz
KHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkg
eworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBmOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGks
IGU6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0
ZTMoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGI6IDQgfSkKKyAgICAgICAg
ZG9EZWxldGUzKHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9Cit9
Citub0lubGluZSh0ZXN0RXhpdCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZU1pc3Mo
KSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzQoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAg
ICAgICBvYmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3CisgICAgICAgIG9iai55ID0gYmxhY2ti
b3gob2JqLnkpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLnopCisgICAgICAgIHJldHVybiBv
YmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jNCkKKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2M0KCkKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlTWlzcykKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVj
dHVyZU1pc3NTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiCisKKyAgICBmdW5jdGlvbiBkb0Fs
bG9jNSgpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai55ID0gNQorICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YWJsZTogZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAg
b2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxl
dGUgb2JqLngpCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0Fs
bG9jNSkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAg
IGRvQWxsb2M1KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0
cmljdCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUo
KSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzYoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAg
ICAgICBvYmoueSA9IDUKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgIngiLCB7
CisgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQx
CisgICAgICAgIH0pCisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFz
c2VydCghKGRlbGV0ZSBvYmoueCkpCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBu
b0lubGluZShkb0FsbG9jNikKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytp
KSB7CisgICAgICAgIGRvQWxsb2M2KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xlU3Ry
dWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZSkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVy
ZUVtcHR5KCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M3KCkgeworICAgICAgICBsZXQgb2JqID0g
eyBhOiAxLCBiOiAyfQorICAgICAgICBvYmpbMV0gPSA1CisgICAgICAgIGRlbGV0ZSBvYmpbMV0K
KyAgICAgICAgYmxhY2tib3goKCkgPT4gb2JqLnggPSA1KSgpCisgICAgICAgIGFzc2VydChPYmpl
Y3Qua2V5cyhvYmopLmxlbmd0aCA9PSAzKQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai5hKQor
ICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai5iKQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai54
KQorICAgICAgICBhc3NlcnQoT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMCkKKyAgICAgICAg
b2JqLnggPSA3CisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxv
YzcpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBk
b0FsbG9jNygpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5KQor
CitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWMoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGU4KG9i
aikgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgICAgICByZXR1cm4gb2JqCisg
ICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlOCkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
NTsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGks
IGY6IDQgfSkKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlOCh7IGksIGU6IDQsIHk6IDEwIH0pLnkg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgZDogNCB9KQorICAgICAgICBk
b0RlbGV0ZTgoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOCh7IGksIGI6IDQgfSkKKyAg
ICAgICAgYXNzZXJ0KGRvRGVsZXRlOCh7IGksIGE6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5l
ZCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAg
ICAgICBkb0RlbGV0ZTgoeyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHlt
b3JwaGljKQorCitmdW5jdGlvbiB0ZXN0UG9seXZhcmlhbnQoKSB7CisgICAgZnVuY3Rpb24gZG9E
ZWxldGU5KG9iaikgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgICAgICByZXR1
cm4gb2JqCisgICAgfQorCisgICAgZnVuY3Rpb24gcG9seXZhcmlhbnQob2JqKSB7CisgICAgICAg
IHJldHVybiBkb0RlbGV0ZTkob2JqKQorICAgIH0KKyAgICBub0lubGluZShwb2x5dmFyaWFudCkK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgIHBvbHl2YXJpYW50
KHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpIHsKKyAgICAgICAgZG9EZWxldGU5KHsgaSwgZjogNCB9KQorICAgICAgICBhc3NlcnQoZG9E
ZWxldGU5KHsgaSwgZTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0Rl
bGV0ZTkoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGM6IDQgfSkKKyAgICAg
ICAgZG9EZWxldGU5KHsgaSwgYjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU5KHsgaSwg
YTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgIH0KKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIHBvbHl2YXJpYW50KHsgaSwgYTogNCB9
KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5dmFyaWFudCkKKworZnVuY3Rpb24gdGVzdENv
bnN0YW50Rm9sZGluZygpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTEwKG9iaikgeworICAgICAg
ICBpZiAoJHZtLmRmZ1RydWUoKSkgeworICAgICAgICAgICAgb2JqID0geyBpOiAwLCBhOiA1LCB5
OiAyMCB9CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICAgICAg
YXNzZXJ0KChkZWxldGUgb2JqLnopICsgNSA9PSA2KQorICAgICAgICByZXR1cm4gb2JqCisgICAg
fQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTApCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUxMCh7IGksIGE6IDQsIHk6IDEw
IH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGUxMCh7IGksIGY6IDQgfSkKKyAg
ICAgICAgYXNzZXJ0KGRvRGVsZXRlMTAoeyBpLCBlOiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMTAo
eyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBiOiA0IH0pCisgICAgfQorfQor
bm9JbmxpbmUodGVzdENvbnN0YW50Rm9sZGluZykKKworZnVuY3Rpb24gdGVzdE9iamVjdFNpbmtp
bmcoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzExKGkpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9
CisgICAgICAgIG9iai54ID0gMQorICAgICAgICBvYmoueSA9IDIKKyAgICAgICAgaWYgKGkgPT0g
MCkKKyAgICAgICAgICAgIG9iai5hID0gMworICAgICAgICBlbHNlIGlmIChpID09IDEpCisgICAg
ICAgICAgICBvYmouYiA9IDMKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAzKQorICAgICAgICAgICAg
b2JqLmMgPSAzCisgICAgICAgIGRlbGV0ZSBvYmoueAorICAgICAgICBhc3NlcnQoKGRlbGV0ZSBv
YmoueCkgKyA1ID09IDYpCisgICAgICAgIHJldHVybiBvYmoueQorCisgICAgfQorICAgIG5vSW5s
aW5lKGRvQWxsb2MxMSkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7
CisgICAgICAgIGFzc2VydChkb0FsbG9jMTEoaSAlIDMpID09IDIpCisgICAgfQorICAgIGFzc2Vy
dChkb0FsbG9jMTEoNCkgPT0gMikKK30KK25vSW5saW5lKHRlc3RPYmplY3RTaW5raW5nKQorCitm
dW5jdGlvbiB0ZXN0UHJveHkoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzEyKCkgeworICAgICAg
ICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSAxCisgICAgICAgIG9iai5jb3VudCA9IDAK
KworICAgICAgICBjb25zdCBoYW5kbGVyID0geworICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHRh
cmdldCwgcHJvcCkgeworICAgICAgICAgICAgYXNzZXJ0KHByb3AgPT0gInoiKQorICAgICAgICAg
ICAgZGVsZXRlIHRhcmdldC56CisgICAgICAgICAgICArK29iai5jb3VudAorICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJveHkob2JqLCBoYW5kbGVyKQorCisg
ICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxMikKKworICAgIGZ1bmN0aW9uIGRvRGVsZXRlMTIo
b2JqKSB7CisgICAgICAgIGRlbGV0ZSBvYmouegorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0
ZTEyKQorCisgICAgbGV0IGZvbyA9IGRvQWxsb2MxMigpCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUxMihmb28pCisgICAgfQorICAgIGFz
c2VydChmb28uY291bnQgPSAxMDAwMDAwKQorfQorbm9JbmxpbmUodGVzdFByb3h5KQorCitmdW5j
dGlvbiB0ZXN0VHlwZWRBcnJheSgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTEyKG9iaikgewor
ICAgICAgICBvYmouY29uc3RydWN0b3IgPSBudWxsCisgICAgICAgIGFzc2VydChkZWxldGUgb2Jq
LmNvbnN0cnVjdG9yKQorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEyKQorCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUxMihuZXcg
VWludDhBcnJheSgpKQorICAgIH0KKworICAgIGxldCBmb28gPSBuZXcgVWludDhBcnJheSgxMik7
CisgICAgdHJhbnNmZXJBcnJheUJ1ZmZlcihmb28uYnVmZmVyKQorICAgIGRvRGVsZXRlMTIoZm9v
KQorICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvb1swXSkKK30KK25vSW5saW5lKHRl
c3RUeXBlZEFycmF5KQorCitmdW5jdGlvbiB0ZXN0TWlzc01peGVkKCkgeworICAgIGZ1bmN0aW9u
IGRvRGVsZXRlMTMob2JqKSB7CisgICAgICAgIHJldHVybiBkZWxldGUgb2JqLngKKyAgICB9Cisg
ICAgbm9JbmxpbmUoZG9EZWxldGUxMykKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAw
MDsgKytpKSB7CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTEzKHsgeTogNCB9KSkKKyAgICAgICAg
bGV0IGZvbyA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4Iiwgewor
ICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MQor
ICAgICAgICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTMoZm9vKSkKKyAgICB9Cit9Citu
b0lubGluZSh0ZXN0TWlzc01peGVkKQorCitmdW5jdGlvbiB0ZXN0TWlzc05vbk1peGVkKCkgewor
ICAgIGZ1bmN0aW9uIGRvRGVsZXRlMTQob2JqKSB7CisgICAgICAgIHJldHVybiBkZWxldGUgb2Jq
LngKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxNCkKKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoZm9vLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTog
ZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0
KCFkb0RlbGV0ZTE0KGZvbykpCisKKyAgICAgICAgZm9vID0geyB5OiA0IH0KKyAgICAgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAgICBjb25maWd1cmFibGU6
IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQwCisgICAgICAgIH0pCisgICAgICAgIGFzc2Vy
dCghZG9EZWxldGUxNChmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RNaXNzTm9uTWl4ZWQp
CisKK2Z1bmN0aW9uIHRlc3RCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTE1KG9iaikg
eworICAgICAgICByZXR1cm4gZGVsZXRlIG9ialsieCJdCisgICAgfQorICAgIG5vSW5saW5lKGRv
RGVsZXRlMTUpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAg
ICAgYXNzZXJ0KGRvRGVsZXRlMTUoeyB5OiA0IH0pKQorICAgICAgICBsZXQgZm9vID0ge30KKyAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAgICBjb25m
aWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0pCisgICAg
ICAgIGFzc2VydCghZG9EZWxldGUxNShmb28pKQorCisgICAgICAgIGZvbyA9IHsgeDogNCB9Cisg
ICAgICAgIGFzc2VydChkb0RlbGV0ZTE1KGZvbykpCisgICAgICAgIGFzc2VydChmb28ueCA9PSB1
bmRlZmluZWQpCisgICAgICAgIGdjKCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0QnlWYWwpCisK
K3Rlc3RCeVZhbCgpCit0ZXN0TWlzc01peGVkKCkKK3Rlc3RNaXNzTm9uTWl4ZWQoKQordGVzdFR5
cGVkQXJyYXkoKQordGVzdFByb3h5KCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdElubGlu
ZVNpbmdsZVN0cnVjdHVyZSgpCit0ZXN0RXhpdCgpCit0ZXN0U2luZ2xlU3RydWN0dXJlTWlzcygp
Cit0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpCit0ZXN0U2luZ2xlU3RydWN0dXJlTWlz
c05vbkNvbmZpZ3VyYWJsZSgpCit0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkoKQordGVzdFBvbHlt
b3JwaGljKCkKK3Rlc3RQb2x5dmFyaWFudCgpCit0ZXN0Q29uc3RhbnRGb2xkaW5nKCkKK3Rlc3RP
YmplY3RTaW5raW5nKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393543</attachid>
            <date>2020-03-13 15:40:34 -0700</date>
            <delta_ts>2020-03-13 16:07:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200313154033.patch</filename>
            <type>text/plain</type>
            <size>100585</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2E4YTM0Njc3OTczNGIzZmVmNGI2NTU0Y2UzM2I2Y2VmZDY4ZGViLi5hNjdjMmE2ZGE3MjMyYTY2
ZDlmYjZlMTY5MjJiYmE2YmE3YWM2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gd2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBz
dHJ1Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAg
ICAgY3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1
cm5pbmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMs
CisgICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUg
KG9yIGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9n
aWMgZm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0
eSB0byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdo
aWxlIGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0
aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRl
bGV0ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBt
aXNzLCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKwor
ICAgICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUg
aWRlbnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVt
b3ZlcyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYg
d2UgbmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFs
c28gZml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1
cyBvZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAg
ICAgICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2Yg
dGhpcyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKwor
ICAgICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlh
bnQtZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3Bl
cnR5LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0
ZW1wdFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3Ry
dWN0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6
CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0Rl
bGV0ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFu
dDo6b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6
Om5ld1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojpy
ZXN1bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2Zmc2V0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJvcGVydHlVbnNldCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAg
KiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVz
Ojpjb21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6RGVs
ZXRlQnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzbG93VmVy
c2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptZXJnZSk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpt
YXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZSk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1
c01hcC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAg
ICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWNv
cmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNl
czo6bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoK
KyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFjaFZlY3Rvcik6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0
ZUJ5T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFw
aC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9E
RkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TXVsdGlEZWxldGVCeU9mZnNldERhdGE6
OndyaXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Om11bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAg
ICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVy
ZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRl
bnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlI
YXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNhbkNhY2hlRGVsZXRlSUMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTAzLTEyICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRGVsZXRlIElD
IGNyZWF0aW9uIHNob3VsZCBjaGVjayBtYXlOZWVkVG9DaGVja0NlbGwvY2FuQ2FjaGVEZWxldGVJ
QyByZWdhcmRsZXNzIG9mIFN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZmYyMjVlMDcxZDllYjRjYzQ0ZWRlOGVhNmU4NWY0
MWI1YmUyN2U4Li43MTMzMDAwMjdlYjUxNWU4ZWEzM2RlOWUyN2Q2MTg5MDgzZmZkMzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MDEsNiArNTAxLDggQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9Db2Rl
VHlwZS5oCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL0RhdGFG
b3JtYXQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKKyAgICBieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5oCiAgICAg
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YWZjZTAxNWY5MGJi
MjUxMDRjOGI2MWUxYjcyOTVjNjdjYzAxY2IxLi41MDY4ODEwYmRiNWRhNTFlMGZhMTE1MmFlMmYw
OWFlMDY0NTcxZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3OCw3ICsx
MTc4LDkgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVD
QTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEy
MDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJF
IC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87IH07CisJCTczMTFGQTMyMjQwREIxRDMwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRW
YXJpYW50LmggKi87IH07CiAJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3M0FEMDYyOTIzRkY2
NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVC
eVN0YXR1cy5oICovOyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNSZWR1Y2VM
b29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICov
OyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNvbnRleHRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjc5NThEN0ZB
MTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkxRTk1QThFQzAwNTJEN0NE
IC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5NzIsNyArMzk3NCwx
MSBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThC
MDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJF
IC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRW
YXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERl
bGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8q
IERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzNBRDA2
MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
bGV0ZUJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTkzMjJF
MEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMvQjNSZWR1
Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTUy
MkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgcGF0aCA9
IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04MjQxLDYgKzgyNDcsMTAgQEAKIAkJCQkwRkM3MTJERDE3Q0Q4Nzc4
MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJRkU1MDY4
NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8sCiAJCQkJRkU1
MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oICovLAorCQkJCTcz
MTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8sCisJCQkJ
NzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8sCisJCQkJ
NzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLywKKwkJCQk3
M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLywKIAkJCQkwRkJD
MEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovLAogCQkJCTBGQkMw
QUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovLAogCQkJCTBGMkVCQkFB
MURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNhY2hlLmNwcCAqLywKQEAgLTkyMTQs
NiArOTIyNCw4IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291
cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8q
IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIx
REVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRl
UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5
RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBC
QkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMDA5NjY2ODJiNTIyMTQ0YmM0ODkxMDU5ZjM5ZTFiYzI4
NjZjZjljLi43ZmM1YTcxYTdhNjhlM2IwMDYxOTY1MjZhYWYxM2MyMzM2Mzc2N2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTksNiArMjE5LDggQEAgYnl0ZWNvZGUvREZHRXhp
dFByb2ZpbGUuY3BwCiBieXRlY29kZS9EYXRhRm9ybWF0LmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNwcAor
Ynl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCitieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5j
cHAKIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29kZS9FdmFsQ29kZUJs
b2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBiZmMxNTllYzc4
N2QxOTU4MGUxOTA4ZjA0NWVjYzM4NDI4ZjEwYzRjLi5lYjg5YjliODBhNDZhZTRmYjU2Nzk5Njlj
ZDkzODQ4NWUxMTI3ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwCkBAIC0xMjksMTAgKzEyOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
dm0pKTsKLSAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90
IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbCwgZS5nLiBUeXBlZEFycmF5IGNlbGxzIHJlcXVpcmUg
YSBjaGVjayBmb3IgbmV1dGVyaW5nIHN0YXR1cy4KLSAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2Rl
IGJlbG93LgotICAgIGlmICghbmV3U3RydWN0dXJlLT5jYW5DYWNoZURlbGV0ZUlDKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9
CiAKQEAgLTE5NDUsMTggKzE5NDIsOSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0KICAgICAgICAgICAgIGFsbG9j
YXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCi0gICAgICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVh
ZGVyKCk7Ci0gICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQg
d2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4KLSAgICAgICAgLy8gU2VlIFN0cnVj
dHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4KLSAg
ICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5jYW5DYWNoZURlbGV0ZUlDKCkpOwotICAgICAg
ICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ug
b3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KLSAgICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0
dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVh
ZGVyOwotCiAgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOwogCi0g
ICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkpIHsKLSAgICAg
ICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIGJhc2VHUFIpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgeworICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CiAg
ICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA3NDM2OTUzNGU5MGVjNzdhMzE1ZDVl
OWMyMDA4ZjJmYzllYzEyNGZlLi5mY2Y2ZmFhOWM3ZmFiZTUxMjQ0OWJhODY0ZDI1NWY5MGRlODlk
Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMTUwMCw2ICsxNTAwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUucHV0
U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmluU3RhdHVzID0g
cGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21t
b24tPnJlY29yZGVkU3RhdHVzZXMuZGVsZXRlcykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5kZWxldGVTdGF0dXMgPSBw
YWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWRhZDZmODBmZDhiODExMzZlMWNjMDBhMjZlOTlhMDU5OWIxMjRhZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZh
cmlhbnQuaCIKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlLAorICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQorICAgIDogbV9yZXN1bHQodHlwZSAhPSBBY2Nlc3NDYXNlOjpEZWxl
dGVOb25Db25maWd1cmFibGUpCisgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1cmUpCisg
ICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCisgICAgLCBtX29mZnNldChvZmZzZXQp
CisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3sKKyAgICBBU1NFUlQo
dHlwZSA9PSBBY2Nlc3NDYXNlOjpEZWxldGUgfHwgdHlwZSA9PSBBY2Nlc3NDYXNlOjpEZWxldGVN
aXNzIHx8IHR5cGUgPT0gQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlKTsKKyAgICBB
U1NFUlQob2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkK
KyAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJU
KG5ld1N0cnVjdHVyZSk7Cit9CisKK0RlbGV0ZUJ5SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZhcmlh
bnQoKSB7IH0KKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KGNvbnN0IERl
bGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitEZWxl
dGVCeUlkVmFyaWFudCYgRGVsZXRlQnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBEZWxldGVC
eUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgbV9pZGVudGlmaWVyID0gb3RoZXIubV9pZGVudGlm
aWVyOworICAgIG1fcmVzdWx0ID0gb3RoZXIubV9yZXN1bHQ7CisgICAgbV9vbGRTdHJ1Y3R1cmUg
PSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAgICBtX25ld1N0cnVjdHVyZSA9IG90aGVyLm1fbmV3
U3RydWN0dXJlOworICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBE
ZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEh
b3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9y
ZXN1bHQgIT0gb3RoZXIubV9yZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtX2lkZW50aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZz
ZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29sZFN0cnVjdHVyZSAhPSBv
dGhlci5tX29sZFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCht
X25ld1N0cnVjdHVyZSA9PSBvdGhlci5tX25ld1N0cnVjdHVyZSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3RydWN0dXJlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICEhbmV3U3RydWN0dXJlKCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZh
cmlhbnQ6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1faWRl
bnRpZmllci52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFy
aWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgaWYgKG1fb2xk
U3RydWN0dXJlKQorICAgICAgICBtX29sZFN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7
CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lm
Q2hlYXAodmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7Cit9CisKK2Jv
b2wgRGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKK3sKKyAgICBpZiAoIXZtLmhl
YXAuaXNNYXJrZWQobV9vbGRTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1fbmV3U3RydWN0dXJlICYmICF2bS5oZWFwLmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERlbGV0
ZUJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0
KikgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBvdXQucHJpbnQoImlkPSciLCBt
X2lkZW50aWZpZXIsICInLCByZXN1bHQ9IiwgbV9yZXN1bHQpOworICAgIGlmIChtX29sZFN0cnVj
dHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIsICIsICptX29sZFN0cnVjdHVyZSk7CisgICAgaWYg
KG1fbmV3U3RydWN0dXJlKQorICAgICAgICBvdXQucHJpbnQoIiAtPiAiLCAqbV9uZXdTdHJ1Y3R1
cmUpOworICAgIG91dC5wcmludCgiLCBvZmZzZXQgPSAiLCBvZmZzZXQoKSk7CisgICAgb3V0LnBy
aW50KCI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YmQ2
YzEwMDFiMDM1ZmY3OGJiMDViYzdjYzRmNzBlMzFjZmZiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaApAQCAtMCww
ICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiQ2FjaGVh
YmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAi
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgorI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxMaW5rU3RhdHVzOworY2xhc3MgRGVsZXRlQnlTdGF0
dXM7CitzdHJ1Y3QgRHVtcENvbnRleHQ7CisKK2NsYXNzIERlbGV0ZUJ5SWRWYXJpYW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEZWxldGVCeUlkVmFyaWFu
dCgKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciwgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSwK
KyAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3V0cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
LCBQcm9wZXJ0eU9mZnNldCk7CisKKyAgICB+RGVsZXRlQnlJZFZhcmlhbnQoKTsKKworICAgIERl
bGV0ZUJ5SWRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisgICAgRGVsZXRlQnlJ
ZFZhcmlhbnQmIG9wZXJhdG9yPShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworCisgICAgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29sZFN0cnVjdHVyZTsgfQor
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9uZXdTdHJ1Y3R1
cmU7IH0KKyAgICBib29sIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9CisgICAg
Ym9vbCB3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3Q7CisKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorCisgICAgYm9vbCBpc1Byb3BlcnR5VW5z
ZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0OyB9CisKKyAgICBi
b29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcik7CisKKyAg
ICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoVk0mKTsKKworICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYsIER1bXBDb250ZXh0KikgY29uc3Q7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKCEh
bV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGlmIChtX2lkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGlmIChtX2lk
ZW50aWZpZXIgIT0gb3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmUgPT0gb3RoZXIu
bV9vbGRTdHJ1Y3R1cmU7CisgICAgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEZWxl
dGVCeVN0YXR1czsKKworICAgIGJvb2wgbV9yZXN1bHQ7CisgICAgU3RydWN0dXJlKiBtX29sZFN0
cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOworICAgIFByb3BlcnR5T2Zm
c2V0IG1fb2Zmc2V0OworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzliN2FkY2Y1YWY3NjAzMGU4Nzgy
NTJiZWVjNDE4MjZiYTI0OGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApAQCAtMCwwICsxLDMxMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1
Y3RzLmgiCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
U2NvcGUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oIgorI2luY2x1
ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIK
KyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2Ug
RE9NSklUIHsKK2NsYXNzIEdldHRlclNldHRlcjsKK30KKworYm9vbCBEZWxldGVCeVN0YXR1czo6
YXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCkKK3sKKyAgICBy
ZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOworfQorCitE
ZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9j
ayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQoreworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKKworICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsK
KworI2lmIEVOQUJMRShERkdfSklUKQorICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dp
dGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBsb2NrZXIsIGJhc2VsaW5lQmxvY2ssIG1h
cC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOworCisgICAgaWYgKGRp
ZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOworICAgIFVOVVNF
RF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworI2lmIEVOQUJMRShKSVQpCitEZWxldGVCeVN0YXR1czo6RGVsZXRlQnlTdGF0dXMoU3R1Yklu
Zm9TdW1tYXJ5IHN1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3sKKyAgICBz
d2l0Y2ggKHN1bW1hcnkpIHsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlv
bjoKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6U2ltcGxlOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5
OjpNYWtlc0NhbGxzOgorICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoQW5k
TWFrZXNDYWxsczoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoOgorICAg
ICAgICBtX3N0YXRlID0gc3R1YkluZm8udG9va1Nsb3dQYXRoID8gT2JzZXJ2ZWRUYWtlc1Nsb3dQ
YXRoIDogTGlrZWx5VGFrZXNTbG93UGF0aDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVC
eVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAg
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBibG9jaywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0
dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2stPnZtKCksIHN0dWJJbmZvKTsKKyAgICBpZiAoIWlz
SW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKHN1bW1h
cnksICpzdHViSW5mbyk7CisKKyAgICBEZWxldGVCeVN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0
Lm1fc3RhdGUgPSBTaW1wbGU7CisgICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsK
KyAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1
cyhOb0luZm9ybWF0aW9uKTsKKworICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHViOiB7CisgICAgICAg
IFBvbHltb3JwaGljQWNjZXNzKiBsaXN0ID0gc3R1YkluZm8tPnUuc3R1YjsKKworICAgICAgICBm
b3IgKHVuc2lnbmVkIGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKyts
aXN0SW5kZXgpIHsKKyAgICAgICAgICAgIGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3Qt
PmF0KGxpc3RJbmRleCk7CisgICAgICAgICAgICBBU1NFUlQoIWFjY2Vzcy52aWFQcm94eSgpKTsK
KworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7
CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKTsKKworICAgICAgICAgICAgc3dpdGNoIChh
Y2Nlc3MudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6
CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNvbmZpZ3VyYWJsZTogewor
ICAgICAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQoYWNjZXNzLmlkZW50aWZp
ZXIoKSwgYWNjZXNzLnR5cGUoKSwgc3RydWN0dXJlLCBudWxscHRyLCBpbnZhbGlkT2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihz
dW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlOiB7CisgICAgICAgICAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb25Gcm9tRXhpc3Rp
bmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoc3RydWN0dXJlLCBhY2Nlc3MuaWRlbnRpZmllcigpLnVp
ZCgpLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0LCBvZmZz
ZXQgPT0gYWNjZXNzLm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVy
ZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1Zl
cnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBhY2Nl
c3MudHlwZSgpLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgYWNjZXNzLm9mZnNldCgpKTsKKwor
ICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1
bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVy
c2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7
CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
RGVsZXRlQnlTdGF0dXMoKTsKK30KKworRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFz
ZWxpbmVNYXAsCisgICAgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQoreworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRD
YWNoZUV4aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworCisgICAgZm9yIChJ
Q1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0
dXMgc3RhdHVzID0gY29udGV4dC0+Z2V0KGNvZGVPcmlnaW4pOworCisgICAgICAgIGF1dG8gYmxl
c3MgPSBbJl0gKGNvbnN0IERlbGV0ZUJ5U3RhdHVzJiByZXN1bHQpIC0+IERlbGV0ZUJ5U3RhdHVz
IHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7Cisg
ICAgICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMgYmFzZWxpbmVSZXN1bHQgPSBjb21wdXRlRm9y
QmFzZWxpbmUoCisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFw
LCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZVJlc3Vs
dC5tZXJnZShyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlbGluZVJlc3VsdDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KEV4aXRGcm9tSW5s
aW5lZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAoc3RhdHVz
LnN0dWJJbmZvKSB7CisgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyByZXN1bHQ7CisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0
LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAg
ICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1Yklu
Zm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBibGVzcyhyZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHN0YXR1cy5kZWxldGVTdGF0dXMpCisgICAgICAgICAgICByZXR1cm4gYmxlc3MoKnN0YXR1
cy5kZWxldGVTdGF0dXMpOworICAgIH0KKworICAgIHJldHVybiBjb21wdXRlRm9yQmFzZWxpbmUo
YmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworRGVsZXRlQnlTdGF0dXMgRGVsZXRlQnlTdGF0dXM6
OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBpZiAob2JzZXJ2ZWRTbG93UGF0aCgpKQorICAg
ICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoKTsKKyAgICBy
ZXR1cm4gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgRGVs
ZXRlQnlTdGF0dXM6Om1lcmdlKGNvbnN0IERlbGV0ZUJ5U3RhdHVzJiBvdGhlcikKK3sKKyAgICBp
ZiAob3RoZXIubV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIG1lcmdlU2xvdyA9IFsmXSAoKSB7CisgICAgICAgIGlmIChvYnNlcnZlZFNsb3dQYXRo
KCkgfHwgb3RoZXIub2JzZXJ2ZWRTbG93UGF0aCgpKQorICAgICAgICAgICAgKnRoaXMgPSBEZWxl
dGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICAqdGhpcyA9IERlbGV0ZUJ5U3RhdHVzKExpa2VseVRha2VzU2xvd1BhdGgpOworICAgIH07
CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAg
ICAgICp0aGlzID0gb3RoZXI7CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2UgU2ltcGxlOgor
ICAgICAgICBpZiAobV9zdGF0ZSAhPSBvdGhlci5tX3N0YXRlKQorICAgICAgICAgICAgcmV0dXJu
IG1lcmdlU2xvdygpOworCisgICAgICAgIGZvciAoYXV0byYgb3RoZXJWYXJpYW50IDogb3RoZXIu
bV92YXJpYW50cykgeworICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFu
dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICBjYXNlIE9i
c2VydmVkVGFrZXNTbG93UGF0aDoKKyAgICAgICAgcmV0dXJuIG1lcmdlU2xvdygpOworICAgIH0K
KworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlT
dGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKK3sKKyAgICBpZiAobV9zdGF0
ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFsbE1h
dGNoaW5nKAorICAgICAgICBbJl0gKGF1dG8mIHZhcmlhbnQpIC0+IGJvb2wgeworICAgICAgICAg
ICAgcmV0dXJuICFzZXQuY29udGFpbnModmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IH0pOworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9IE5v
SW5mb3JtYXRpb247Cit9CisKK0NhY2hlYWJsZUlkZW50aWZpZXIgRGVsZXRlQnlTdGF0dXM6OnNp
bmdsZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHJlc3Vs
dCA9IG1fdmFyaWFudHMuZmlyc3QoKS5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV92YXJp
YW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBtX3ZhcmlhbnRzW2ldLmlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpZGVudGlmaWVyICE9
IHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDog
bV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30K
Kwordm9pZCBEZWxldGVCeVN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgZm9yIChEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisg
ICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgRGVsZXRlQnlT
dGF0dXM6OmZpbmFsaXplKFZNJiB2bSkKK3sKKyAgICBmb3IgKGF1dG8mIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSh2bSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERlbGV0
ZUJ5U3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50
KCIoIik7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBOb0luZm9ybWF0aW9uOgor
ICAgICAgICBvdXQucHJpbnQoIk5vSW5mb3JtYXRpb24iKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBTaW1wbGU6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlIik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTGlrZWx5VGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnByaW50KCJMaWtl
bHlUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT2JzZXJ2ZWRUYWtl
c1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIk9ic2VydmVkVGFrZXNTbG93UGF0aCIpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgb3V0LnByaW50KCIsICIsIGxpc3REdW1wKG1fdmFy
aWFudHMpLCAiKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVhZDYw
MmI2NTE3MGMxNDYwMjczN2RkN2NjODU1NzY5OGY1ZjcxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAgLTAsMCArMSwx
MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJD
YWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb25j
dXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRl
ICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiU3R1Yklu
Zm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3NDYXNlOworY2xh
c3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNzIERlbGV0ZUJ5
U3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNoZWQgc28gd2Ug
aGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAgICAgICAgLy8g
SXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxlLAorICAgICAg
ICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAgIExpa2VseVRh
a2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0aGUgc2xv
dyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsKKworICAgIERl
bGV0ZUJ5U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCisgICAgewor
ICAgIH0KKworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0YXRlIHN0YXRlKQorICAgICAg
ICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxl
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxv
Y2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250
ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBi
b29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBj
b25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJuIG1f
dmFyaWFudHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBj
b25zdDsKKworICAgIERlbGV0ZUJ5U3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CisKKyAgICAv
LyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVu
IHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZvaWQgZmlsdGVy
KGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90Vmlz
aXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZp
bmFsaXplKFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZh
cmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwgU3RydWN0dXJl
U3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CisKKyAg
ICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElD
U3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgc3RhdGljIERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3Rv
cjxEZWxldGVCeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c01hcC5oCmluZGV4IGRiZDVhODgyMzEyNDIyZDRlOGIyZWRkM2I3OTgyMmM3Njdh
N2JiYzguLmYwMzE5MDExNWEzYjhlNDJiNGViOGI4NzQwM2FmMmQ4NGUwMzc0ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zNyw2ICszNyw3
IEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwogY2xhc3MgSW5CeUlkU3Rh
dHVzOwogY2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3Mg
U3RydWN0dXJlU3R1YkluZm87CiBzdHJ1Y3QgQnlWYWxJbmZvOwogCkBAIC00OCw2ICs0OSw3IEBA
IHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIg
fTsKICAgICBJbkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIFB1dEJ5SWRT
dGF0dXMqIHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRl
U3RhdHVzIHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElD
U3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRl
eCBjOTQ4NGI0ODVhZGZlNmRhYjRjY2YyYjdhYTY0NWJmNzg4OTgwODMyLi5kNjE1YTEzZDljM2M0
NzVhNjE2YzJlNTQ3NzI5NTU0NjE2OWM0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBAIFJl
Y29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1
c2VzJiYgb3RoZXIpCiAgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CiAgICAgcHV0cyA9
IFdURk1vdmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RGTW92ZShvdGhlci5pbnMpOworICAg
IGRlbGV0ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwogICAgIHNocmlua1RvRml0KCk7CiAg
ICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNzUsMTAgKzc2LDIwIEBAIEluQnlJZFN0YXR1cyogUmVj
b3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVsZXRlQnlTdGF0dXMqIFJlY29yZGVk
U3RhdHVzZXM6OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4s
IGNvbnN0IERlbGV0ZUJ5U3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBt
YWtlVW5pcXVlPERlbGV0ZUJ5U3RhdHVzPihzdGF0dXMpOworICAgIERlbGV0ZUJ5U3RhdHVzKiBy
ZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgZGVsZXRlcy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYg
c2xvdFZpc2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKICAgICAgICAgcGFp
ci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBh
aXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZp
c2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNp
dG9yJiBzbG90VmlzaXRvcikKQEAgLTg5LDYgKzEwMCw4IEBAIHZvaWQgUmVjb3JkZWRTdGF0dXNl
czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAgICBwYWlyLnNl
Y29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGlu
cykKICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBm
b3IgKGF1dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hl
YXAoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0
aG91dERlbGV0aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5oCmluZGV4IGIzNTVlOWI2MjMzODQ2MjkyNjQ4MmM3YzFiOTFm
NDIxZmZlNjIwZDAuLjllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4ZDA1NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua1N0
YXR1cy5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0
dXMuaCIKICNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVz
LmgiCkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBHZXRC
eVN0YXR1cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEdldEJ5U3Rh
dHVzJik7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlk
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICBEZWxl
dGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IERl
bGV0ZUJ5U3RhdHVzJik7CiAgICAgCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRv
ciYpOwogICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKQEAgLTYzLDEyICs2NSwx
NCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMoZ2V0cyk7CiAgICAg
ICAgIGZ1bmMocHV0cyk7CiAgICAgICAgIGZ1bmMoaW5zKTsKKyAgICAgICAgZnVuYyhkZWxldGVz
KTsKICAgICB9CiAgICAgCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVu
aXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxD
b2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0czsKICAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3RhdHVzPj4+
IHB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5CeUlkU3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0
ZDo6dW5pcXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBkZWxldGVzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZTk1ODAwYWZmMjY3OTVhNDJkOTQ2Mzk0
Y2JkZTUzMDk2ODhjZGM0Ni4uMjFmMDAzYTE5MGU1Y2NiYmRmYTA2ODQ1YzA2ZWM2MjE1Nzc2YTQz
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzcwOSw2ICszNzA5LDQxIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAg
ICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25W
ZWN0b3IgdHJhbnNpdGlvbnM7CisKKyAgICAgICAgLy8gT3JkaW5hcmlseSB5b3UgaGF2ZSB0byBi
ZSBjYXJlZnVsIHdpdGggY2FsbGluZyBzZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcoKQorICAg
ICAgICAvLyBiZWNhdXNlIG9mIHRoZSBlZmZlY3Qgb24gY29tcGlsZSB0aW1lcywgYnV0IHRoaXMg
bm9kZSBpcyBGVEwtb25seS4KKyAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZv
bGRpbmcodHJ1ZSk7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSBiYXNlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSk7CisKKyAgICAgICAgaWYgKG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRh
KCkud3JpdGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJTdHJ1Y3R1
cmVzKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9m
ZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IERl
bGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEo
KS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgdGhpc1Nl
dCA9ICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgICAgIHRoaXNTZXQuZmlsdGVyKGJhc2UpOworICAgICAgICAgICAgaWYgKHRoaXNTZXQu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAo
dmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAg
ICAgICAgICAgICAgICAgIFRyYW5zaXRpb24obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3
U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgbmV3U2V0Lm1lcmdlKHRoaXNTZXQpOworICAgICAgICB9CisKKyAgICAgICAgb2JzZXJ2ZVRy
YW5zaXRpb25zKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbnMpOworICAgICAgICBpZiAoZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5ld1NldCkgPT0gQ29u
dHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwpA
QCAtNDEwNiw2ICs0MTQxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
IGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJlYWs7CiAKQEAgLTQyODcsNiArNDMy
MywxMyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0
ZXJJQ1N0YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5p
c0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+ZGVsZXRlQnlTdGF0dXMoKS0+ZmlsdGVyKHZh
bHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDUzYjAxNDgzZWQ0MTQ5MDg0
ODc1MWRkYjMzNjlkMjE2YmNiNWQ1YzguLmJlNjcxMjFjZTMxMzg1ZGZkOTVlN2RiNDE4OWJkOGNj
Zjc4OTg4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAg
ICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBG
aWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNl
IENoZWNrQXJyYXlPckVtcHR5OgpAQCAtMTI2Niw3ICsxMjY3LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOiB7CisgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2Fz
ZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxp
bWluYXRlZEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFw
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGU2ZDViNjVhNGQwMTE2YzY4NmFlMDZlMTE4Y2Q3ZmNhOTM3NjcxY2YuLmNkNzY2OTQ3
OTRiNjM2Yjk5Y2E5MGM2OGY5YmE0YjJmMGUyM2IwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTI0OSw2ICsyNTAsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29s
IGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSk7CisKKyAgICB2b2lkIGhhbmRsZURl
bGV0ZUJ5SWQoCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFz
ZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMpOwogICAgIAogICAg
IC8vIEVpdGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlz
IGNvbmRpdGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9u
Z2VyIGhvbGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0
ZWQuCkBAIC00NjE0LDYgKzQ2MTgsMTA0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdl
dEJ5SWQoCiAgICAgICAgIGdldHRlciwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgcmVnaXN0ZXJP
ZmZzZXQsICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIHByZWRpY3Rpb24pOwogfQogCit2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBk
ZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBE
ZWxldGVCeVN0YXR1cyBkZWxldGVCeVN0YXR1cykKK3sKKyAgICBpZiAoIWRlbGV0ZUJ5U3RhdHVz
LmlzU2ltcGxlKCkgfHwgIWRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpIHx8ICFPcHRp
b25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAg
ICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIp
LCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVsZXRlQnlTdGF0
dXMudmFyaWFudHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4u
aXNGVEwoKQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmcoKQorICAgICAgICAgICAgfHwgZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkg
PiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAg
ICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVs
ZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5
U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2UpOworCisg
ICAgICAgIGJvb2wgaGFzSGl0ID0gZmFsc2U7CisgICAgICAgIGJvb2wgaGFzTWlzcyA9IGZhbHNl
OworICAgICAgICBib29sIGhhc01pc3NOb25jb25maWd1cmFibGUgPSBmYWxzZTsKKworICAgICAg
ICBmb3IgKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogZGVsZXRlQnlTdGF0dXMu
dmFyaWFudHMoKSkgeworICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKSB7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBoYXNIaXQgPSB0cnVlOworICAgICAg
ICAgICAgfSBlbHNlIGlmICh2YXJpYW50LnJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGhhc01p
c3MgPSB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGhhc01pc3NOb25j
b25maWd1cmFibGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFoYXNIaXQpIHsK
KyAgICAgICAgICAgIGlmICgoaGFzTWlzcyAmJiAhaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkgfHwg
KCFoYXNNaXNzICYmIGhhc01pc3NOb25jb25maWd1cmFibGUpKSB7CisgICAgICAgICAgICAgICAg
U3RydWN0dXJlU2V0IGJhc2VTZXQ7CisKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IERlbGV0
ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYmFzZVNldC5hZGQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisKKyAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQoYmFzZVNldCkpLCBiYXNlKTsKKyAgICAgICAgICAgICAgICBzZXQoZGVz
dGluYXRpb24sIGpzQ29uc3RhbnQoanNCb29sZWFuKGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClb
MF0ucmVzdWx0KCkpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlEZWxldGVCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlh
bnRzID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmll
ck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlEZWxldGVCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBi
YXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVsZXRlQnlTdGF0
dXMudmFyaWFudHMoKS5zaXplKCkgPT0gMSk7CisgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFu
dCA9IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF07CisKKyAgICBpZiAoIXZhcmlhbnQubmV3
U3RydWN0dXJlKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJEZWxldGVCeVN0YXR1cywg
T3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGREZWxldGVCeVN0YXR1
cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAg
YWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgICAgIHNldChkZXN0aW5hdGlv
biwganNDb25zdGFudChqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVyRGVsZXRlQnlTdGF0dXMsIE9wSW5m
byhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkRGVsZXRlQnlTdGF0dXMoY3Vy
cmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwgYmFzZSk7CisgICAgYWRkVG9HcmFw
aChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQu
b2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJl
KCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIEFT
U0VSVCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldCh2
YXJpYW50Lm9mZnNldCgpKSk7CisKKyAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CisgICAgVHJh
bnNpdGlvbiogdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAg
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgaWYg
KGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UgPSBiYXNlOworICAgIGVsc2UKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFw
aChHZXRCdXR0ZXJmbHksIGJhc2UpOworCisgICAgU3RvcmFnZUFjY2Vzc0RhdGEqIGRhdGEgPSBt
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAgZGF0YS0+b2Zmc2V0ID0gdmFy
aWFudC5vZmZzZXQoKTsKKyAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51
bWJlcjsKKworICAgIGFkZFRvR3JhcGgoCisgICAgICAgIFB1dEJ5T2Zmc2V0LAorICAgICAgICBP
cEluZm8oZGF0YSksCisgICAgICAgIHByb3BlcnR5U3RvcmFnZSwKKyAgICAgICAgYmFzZSwKKyAg
ICAgICAganNDb25zdGFudChKU1ZhbHVlKCkpKTsKKworICAgIGFkZFRvR3JhcGgoUHV0U3RydWN0
dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIHNldChkZXN0aW5hdGlvbiwganND
b25zdGFudChqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkpKTsKKyAgICByZXR1cm47Cit9CisK
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAogICAgIE5vZGUqIGJhc2UsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBw
dXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0KQogewpAQCAtNTk0NCwxNSArNjA0Niw0OSBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwog
ICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRp
ZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwg
YmFzZSkpOworICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMgPSBEZWxl
dGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9i
YXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29k
ZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNvZGUubV9kc3Qs
IGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2Rl
bF9ieV92YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVj
b2RlLm1fYmFzZSk7Ci0gICAgICAgICAgICBOb2RlKiBrZXkgPSBnZXQoYnl0ZWNvZGUubV9wcm9w
ZXJ0eSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRl
QnlWYWwsIGJhc2UsIGtleSkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0
ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29sIHNob3VsZENvbXBpbGVBc0RlbGV0
ZUJ5SWQgPSBmYWxzZTsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVz
ID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3Vy
cmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgPSAwOworCisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgeworCisg
ICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IGRlbGV0
ZUJ5U3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRp
Zmllci51aWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzQ2VsbCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFw
aC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hl
Y2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgc2hv
dWxkQ29tcGlsZUFzRGVsZXRlQnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJZCkKKyAg
ICAgICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVu
dGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBiYXNl
LCBwcm9wZXJ0eSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X3ZhbCk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCBiMjMxOGZlMDNhZWQ0MWUwMzA5NTg3ZTdkZjkwNzY5Y2IwNGUzYzQ5Li43MDk0M2UwNWVkMjlj
MmM5OTExOTdhNWUyYmM1MmYyNmY2YmI4NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtNDczLDYgKzQ3Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxl
dGVCeVN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKQEAgLTEyODQsNiArMTI4NSwxNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAgcmVh
ZChKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7
CisgICAgICAgIEFic3RyYWN0SGVhcCBoZWFwKE5hbWVkUHJvcGVydGllcywgbm9kZS0+bXVsdGlE
ZWxldGVCeU9mZnNldERhdGEoKS5pZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgd3JpdGUoaGVh
cCk7CisgICAgICAgIGlmIChub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0
cnVjdHVyZXMoKSkKKyAgICAgICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAg
ICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQx
KCkpLCBMYXp5Tm9kZShncmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBub2RlLT5zdG9yYWdlQWNjZXNzRGF0YSgpLmlk
ZW50aWZpZXJOdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhk
MmJmMDZkZWIuLmYxNzQ1ZWNhYTAxNWE5NmRlYmYwZGMxYTliYWE5MjgxMjFkMzk2NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CkBAIC04Niw2ICs4Niw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBi
dXQgbm90aGluZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRl
IHRoZQogICAgICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5k
IHRob3NlIHRoYXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAg
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCmluZGV4IGI0M2Y3Y2Y1NGUxMjE3NDcxNzZkZGNlOTY1YjZjODE4ZjI5MTYx
ODUuLjEzNzlmYWM4MzA2YzNlMjI4Y2M5ZGMyMjc0YjU0ZWQ4NWY0MDQwM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CkBAIC01MDksNiArNTA5LDM2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogeworICAgICAgICAgICAgICAgIEVkZ2UgYmFz
ZUVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gYmFz
ZUVkZ2Uubm9kZSgpOworICAgICAgICAgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBk
YXRhID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKTsKKworICAgICAgICAgICAgICAg
IEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2UpOworCisgICAg
ICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2gg
Q0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgorICAgICAg
ICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1
bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgorCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBkYXRhLnZh
cmlhbnRzW2ldOworCisgICAgICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLmNvbnRhaW5z
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0gPSBkYXRhLnZhcmlhbnRz
Lmxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudmFyaWFudHMucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkYXRhLnZhcmlhbnRzLnNpemUoKSAhPSAx
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVtaXREZWxl
dGVCeU9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNl
VmFsdWUsIGRhdGEudmFyaWFudHNbMF0sIGRhdGEuaWRlbnRpZmllck51bWJlcik7CisgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJl
OiB7CiAgICAgICAgICAgICAgICAgRWRnZSBiYXNlRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwpAQCAt
MTMwOCw2ICsxMzM4LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlKTsK
ICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgZW1pdERlbGV0ZUJ5T2Zmc2V0KHVuc2lnbmVk
IGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVl
LCBjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlcikKKyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwor
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9yaWdpbi5leGl0T0spOworICAgICAg
ICBhZGRCYXNlQ2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICBub2RlLT5j
aGlsZDEoKS5zZXRVc2VLaW5kKEtub3duQ2VsbFVzZSk7CisKKyAgICAgICAgaWYgKCF2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSk7CisgICAgICAgICAgICBub2RlLT5v
cmlnaW4gPSBub2RlLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFw
aC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAgIEVkZ2UgcHJvcGVydHlTdG9yYWdlOwor
CisgICAgICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAg
ICAgIHByb3BlcnR5U3RvcmFnZSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBFZGdlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBv
cmlnaW4sIG5vZGUtPmNoaWxkMSgpKSk7CisKKyAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEmIGRh
dGEgPSAqbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgICAgICBkYXRhLm9m
ZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEuaWRlbnRpZmllck51bWJlciA9
IGlkZW50aWZpZXJOdW1iZXI7CisKKyAgICAgICAgTm9kZSogY2xlYXJWYWx1ZSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgSlNDb25zdGFudCwgb3Jp
Z2luLCBPcEluZm8obV9ncmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgUHV0QnlPZmZzZXQsIG9yaWdpbiwgT3BJbmZvKCZkYXRhKSwgcHJvcGVydHlTdG9yYWdl
LCBub2RlLT5jaGlsZDEoKSwgRWRnZShjbGVhclZhbHVlKSk7CisgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQdXRT
dHJ1Y3R1cmUsIG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKSwgT3BJbmZvKHRyYW5zaXRpb24pLAor
ICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0Nv
bnN0YW50KG5vZGUsIGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSk7CisgICAgICAgIG5vZGUt
Pm9yaWdpbiA9IG5vZGUtPm9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICB9CiAgICAgCiAg
ICAgdm9pZCBhZGRCYXNlQ2hlY2soCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9k
ZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVT
ZXQmIHNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1NWQz
YzhmZDVkY2Y4ZmEyZWZiYTM3Zjk2ZGM5MDk5ZDQ5NzI1MTgxLi45MmMwMzhmMDU5MDJlZThjMzEw
YzVhMTEzZDY0OTVkMDUwNTEwY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC0xODYsNiArMTg2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0Zs
YWdzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlP
ZmZzZXQ6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNl
IEludDUyUmVwOgpAQCAtMjQ1LDYgKzI0Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZp
bHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRGF0ZUdldEludDMyT3JOYU46CiAgICAgY2Fz
ZSBEYXRlR2V0VGltZToKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZTk3ZGUxMGY2ZjRjZGMxNWJhZWZi
MTBiN2VjNjA2MjgyNzgzNTk1NS4uMTQyZDc4YjhjNDM2ODFmYzMzZmZmMzBiNmU5YjhkMjhkYjg5
OWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0xODE1LDYgKzE4MTUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAg
ICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6ICB7CisgICAgICAgICAgICBmaXhFZGdlPENl
bGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZTogewogICAgICAgICAgICAg
Ly8gRklYTUU6IEludHJvZHVjZSBhIHZhcmlhbnQgb2YgTWF0Y2hTdHJ1Y3R1cmUgdGhhdCBkb2Vz
bid0IGRvIGEgY2VsbCBjaGVjay4KQEAgLTI1ODAsNiArMjU4NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAg
ICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDY5ZTI5MDBhZWRkNjlkMjQ1
NWYyNTE0MzMyZmNkOTQ1NzU4ZTFiMGYuLmFmMjgyNjczZTQ1YzI3MWVmODUzZDljMjJlYmY5YWE3
MTYzZTVkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0zMDIs
NiArMzAyLDEyIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hh
ciogcHJlZml4U3RyLCBOb2RlKiBub2RlLCBEdW1wQ29udGV4CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBkYXRhLnZhcmlhbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0YS52YXJpYW50c1tpXSwgY29udGV4dCkpOwogICAg
IH0KKyAgICBpZiAobm9kZS0+aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEoKSkgeworICAgICAg
ICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSYgZGF0YSA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZz
ZXREYXRhKCk7CisgICAgICAgIG91dC5wcmludChjb21tYSwgImlkIiwgZGF0YS5pZGVudGlmaWVy
TnVtYmVyLCAieyIsIGlkZW50aWZpZXJzKClbZGF0YS5pZGVudGlmaWVyTnVtYmVyXSwgIn0iKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLnZhcmlhbnRz
W2ldLCBjb250ZXh0KSk7CisgICAgfQogICAgIGlmIChub2RlLT5oYXNNYXRjaFN0cnVjdHVyZURh
dGEoKSkgewogICAgICAgICBmb3IgKE1hdGNoU3RydWN0dXJlVmFyaWFudCYgdmFyaWFudCA6IG5v
ZGUtPm1hdGNoU3RydWN0dXJlRGF0YSgpLnZhcmlhbnRzKQogICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCBpbkNvbnRleHQoKnZhcmlhbnQuc3RydWN0dXJlLmdldCgpLCBjb250ZXh0KSwgIj0+
IiwgdmFyaWFudC5yZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4
IDk0N2VmYWFiYTllNjQ5NmIzYjA1YzZmNTUxNDJhYjdjNzdiNWI1YTIuLjJjMjUxOTZmYjA1YzQ5
Nzc5NGI1ZGRmYzY2MWRjNzdmZjFhMGUwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKQEAgLTExMDAsNiArMTEwMCw3IEBAIHB1YmxpYzoKICAgICBCYWc8U3dpdGNoRGF0YT4g
bV9zd2l0Y2hEYXRhOwogICAgIEJhZzxNdWx0aUdldEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aUdldEJ5
T2Zmc2V0RGF0YTsKICAgICBCYWc8TXVsdGlQdXRCeU9mZnNldERhdGE+IG1fbXVsdGlQdXRCeU9m
ZnNldERhdGE7CisgICAgQmFnPE11bHRpRGVsZXRlQnlPZmZzZXREYXRhPiBtX211bHRpRGVsZXRl
QnlPZmZzZXREYXRhOwogICAgIEJhZzxNYXRjaFN0cnVjdHVyZURhdGE+IG1fbWF0Y2hTdHJ1Y3R1
cmVEYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhPiBtX29iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGE7CiAgICAgQmFnPENhbGxWYXJhcmdzRGF0YT4gbV9jYWxsVmFyYXJnc0Rh
dGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBiOTI4ODEw
ZTEwMTU1M2IxOWFmNTEzNDQyYzAzZWJlZWMwNDgwZjJiLi4xY2NhOGIyYWM0MWNiZTdmNDk2ZDNj
OTZhN2I4ZGQxMDAwMmQ1ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKQEAgLTEwOSw2ICsxMDksNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIFN0ckNhdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmlu
ZGV4IGRjYjJiNTlkY2FjYmIyMTkzYTgyYTBiOTczMzM5OWYwNTc0MmE0MzguLmY3M2FmNjAwMTFj
MTUwMWQwODBiMWVlMDZiYzdiMGFhNjVjMzZkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcApAQCAtNTcsNiArNTcsMTUgQEAgYm9vbCBNdWx0aVB1dEJ5T2Zmc2V0RGF0YTo6
cmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wg
TXVsdGlEZWxldGVCeU9mZnNldERhdGE6OndyaXRlc1N0cnVjdHVyZXMoKSBjb25zdAoreworICAg
IGZvciAodW5zaWduZWQgaSA9IHZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAo
dmFyaWFudHNbaV0ud3JpdGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBCcmFuY2hUYXJnZXQ6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCAxMzQ1NWI1YzI5ZjA3MGZlZjJmOTkxOTUyYmNmZjAwN2Zl
YTkxNzI2Li4wOTg2ZjlhNzFmY2MxNzk4NzU3ZjRhZWVkZDlhYjQ2MjkxYzhmNGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkRG
R1RyYW5zaXRpb24uaCIKICNpbmNsdWRlICJERkdVc2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKICNpbmNs
dWRlICJHZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJPcGVyYW5kcy5oIgpAQCAtOTIsNiArOTMsMTMgQEAgc3RydWN0IE11bHRpUHV0QnlPZmZzZXRE
YXRhIHsKICAgICBib29sIHJlYWxsb2NhdGVzU3RvcmFnZSgpIGNvbnN0OwogfTsKIAorc3RydWN0
IE11bHRpRGVsZXRlQnlPZmZzZXREYXRhIHsKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
OworICAgIFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMj4gdmFyaWFudHM7CisKKyAgICBib29s
IHdyaXRlc1N0cnVjdHVyZXMoKSBjb25zdDsKK307CisKIHN0cnVjdCBNYXRjaFN0cnVjdHVyZVZh
cmlhbnQgewogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlOwogICAgIGJvb2wgcmVz
dWx0OwpAQCAtMjAxNCw2ICsyMDIyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc011
bHRpUHV0QnlPZmZzZXREYXRhKCkpOwogICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPE11bHRp
UHV0QnlPZmZzZXREYXRhKj4oKTsKICAgICB9CisKKyAgICBib29sIGhhc011bHRpRGVsZXRlQnlP
ZmZzZXREYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IE11bHRpRGVsZXRlQnlP
ZmZzZXQ7CisgICAgfQorCisgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEmIG11bHRpRGVsZXRl
QnlPZmZzZXREYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNNdWx0aURlbGV0ZUJ5T2Zm
c2V0RGF0YSgpKTsKKyAgICAgICAgcmV0dXJuICptX29wSW5mby5hczxNdWx0aURlbGV0ZUJ5T2Zm
c2V0RGF0YSo+KCk7CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzTWF0Y2hTdHJ1Y3R1cmVEYXRh
KCkKICAgICB7CkBAIC0yOTc2LDYgKzI5OTUsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8UHV0QnlJZFN0YXR1cyo+KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNEZWxl
dGVCeVN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJEZWxldGVC
eVN0YXR1czsKKyAgICB9CisKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlQnlTdGF0dXMoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0RlbGV0ZUJ5U3RhdHVzKCkpOworICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXM8RGVsZXRlQnlTdGF0dXMqPigpOworICAgIH0KKwogICAgIHZvaWQgZHVt
cENoaWxkcmVuKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkMSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGUyMTFlYTc3ZDg1
NDE5OWJiODQ2M2ZhZWMzN2JmNWM0MWM1Zjk3ZTcuLmQxMzY3MDFlN2I3NjZmNDY4MDMzOWIwMTUx
NmZmMGZkMWUwYzQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
QEAgLTI1Miw2ICsyNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oTXVsdGlHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
TXVsdGlQdXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE11bHRpRGVs
ZXRlQnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhHZXRBcnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9y
TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCkBAIC01MjYsNiArNTI3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRlckdldEJ5U3RhdHVzLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkg
XAorICAgIG1hY3JvKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgLyogRGF0YSB2aWV3IGFjY2VzcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRJbnQsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBnZXRzIGFyZSBtdXN0IGdlbmVy
YXRlIGZvciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVja3MgKi8gXAogICAgIG1hY3Jv
KERhdGFWaWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91YmxlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAwNWFjZGYyMzg3Njk3M2Y4OGU4MmI5YTcz
YjM0OWVlNzc5YjViOTg0Li5kMDBlYTYxZWEyOTVkMTY3MDNmNTY2NTY4ZmFlOTk3MTY1MWExMThk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTEyMjAsNiArMTIyMCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBkZWZhdWx0OgpAQCAtMjU3MCw2ICsyNTcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRDaGVja3MoKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDI4ODg1OGIzOGMxNmE2
NWE4YzhlYmRiOWQ0MzcwMTI4MzQ3MmE1MGEuLjhmMTkyNjA4MDU2Njk0N2JhYmEwMmYxNzc2YjU0
MDk0YjEwZTBiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODQsNiArOTg0LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAgICAgICBj
YXNlIERlbGV0ZUJ5SWQ6CisgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAg
ICAgY2FzZSBMb2dpY2FsTm90OgogICAgICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgICAgICBj
YXNlIENvbXBhcmVMZXNzRXE6CkBAIC0xMzk1LDYgKzEzOTYsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0
dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6CiAgICAgICAg
IGNhc2UgRGF0YVZpZXdTZXQ6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIy
ZDE0MjliMmUwNTY0ZTYwMWEwYzdmYzk2NjRiNTVlYWMuLmQ2ZTdjOWUzMDg1NzIyNGM4MjU4NTY4
MmNhYjZkMDdhZTdkMWUxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCkBAIC0zNjEsNiArMzYxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8K
ICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZXNlIHRvIGJlIG1vdmVkIGFueXdo
ZXJlIG90aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0sIHNpbmNlIHdlIHdhbnQgdGhlbQogICAg
ICAgICAvLyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0IHRoZSBwb2ludCBpbiBjb250cm9sIGZs
b3cgaGVyZSB0aGUgdXNlciBwdXQgdGhlbS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjA4
LDYgKzYwOSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUs
IEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBJbnZhbGlkYXRp
b25Qb2ludDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNl
dDoKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRFbnVtZXJhYmxl
TGVuZ3RoOgogICAgIGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0
dXJlUHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBlNjE1MTUxNzUwNGNiMjU3ZWUzYjU4MjM4ZmZhODJk
YWI3Mjk4Njg0Li5mMTExNGYxZGI4ZGM5MGM5Yzg0ZDU1OGQwMTk4N2VkM2QwN2ZkMmY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTQxOTAsNiArNDE5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZp
bHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVz
KG5vZGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00MjA4
LDYgKzQyMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2Ug
TXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2Fz
ZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21O
ZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCBjOGMxN2YyYWZkMzNhMGI0MmZlZjY0NWFiZjNhYmYwNmJjNTk2ZDQ3
Li45MDc5NWFkNmQ5ODA4ZmI4NmEyZGJmYzBmMzU2NTRhZTE3ZTFhODFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTUyNTUs
NiArNTI1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUpOwogICAgICAg
ICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01MjY5LDYgKzUyNzAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aElN
dWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNl
dDoKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBGaWF0SW50NTI6CiAg
ICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3Bw
CmluZGV4IDdjN2FiZTgzZTIzYTVkODhhMzIwODNhNTBlZGYzNGQzNmNkNjM2OWIuLjkyZDBjOGYx
YzQ1NjM3MzkwYzA2MzRhODE1ODI0Mjg1ZTk3YTNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcApAQCAtMjg3
LDYgKzI4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAg
ICAgICAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICAgICAgICAgICAgICBjYXNl
IE11bHRpUHV0QnlPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zm
c2V0OgogICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBjb3VudCB0aGVzZSB1c2VzLgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCkBAIC0zNjIsNiAr
MzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAg
ICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgIGNhc2UgTXVs
dGlQdXRCeU9mZnNldDoKKyAgICAgICAgICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6
CiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IHRoZXNlIHVzZXMuCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggM2E3NzcxMTQ1Yzc2MGIzNDgyZTdlMWFj
OWI2NDk5MDFkZmYxOWQ1YS4uMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4YTFiZmYzOThj
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTMxMSw2
ICszMTEsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPmRmZ1Nob3VsZFdhdGNo
KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52
YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERl
bGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEo
KS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwg
IXZhcmlhbnQubmV3U3RydWN0dXJlKCkgfHwgIXZhcmlhbnQub2xkU3RydWN0dXJlKCktPmRmZ1No
b3VsZFdhdGNoKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAg
ICAgICAgICAgICAgICAgIGZvciAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBub2Rl
LT5zdHJ1Y3R1cmVTZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5
IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRp
bmdQaGFzZS5jcHAKaW5kZXggNzRlYTYxOGU5MDExMjlhNTdlMmM4M2JiODkyYTc1YjdiODA2MzNi
Ny4uMGMzNWE1MzY1Y2M0NmVmM2M3ODk5NDhmNGQyZTYwY2NmMDE3NmI5OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Uu
Y3BwCkBAIC0xOTgsNiArMTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAg
ICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
IGNhc2UgR2V0QnlPZmZzZXQ6IHsKQEAgLTM5OSw2ICs0MDAsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkubm9kZSgpID09IGNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+cmVtb3ZlKG1fZ3JhcGgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVjNjlkMWQzOGMx
YzYxMDU5OWZkMzAyOTk3MzQzNjBjYjIyN2FjYjIuLmUxZjU4OWYyNzM0M2JmZjkzNjIxNjE4OGRh
ZTNiNWM4NjM2ODY4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKQEAgLTIzMyw2ICsyMzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIE11bHRpR2V0
QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxl
dGVCeU9mZnNldDoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgogICAgIGNhc2UgVG9Qcm9wZXJ0eUtl
eToKICAgICBjYXNlIFRocm93OgpAQCAtMzkyLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgIGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBmYjFk
MDI1NTY1N2Q4OGEzNTExYTI1YzViNDQ5YTQxNmRkYmMzZDA3Li5kNTc3ZjJkNTBjZDE1MTVjN2Uw
M2FlNGNmNGExZTc4YTYxZDMxNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0xMTc3LDYgKzExNzcsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlTXVsdGlQdXRCeU9m
ZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9m
ZnNldDoKKyAgICAgICAgICAgIGNvbXBpbGVNdWx0aURlbGV0ZUJ5T2Zmc2V0KCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICAgICAgICAgIGNv
bXBpbGVNYXRjaFN0cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTY5LDYgKzE1
NzIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3Rh
dHVzOgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgY29t
cGlsZUZpbHRlcklDU3RhdHVzKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBE
YXRlR2V0SW50MzJPck5hTjoKQEAgLTgxMjQsNiArODEyOCwxMDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAg
IH0KKworICAgIHZvaWQgY29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQoKQorICAgIHsKKyAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBNdWx0
aURlbGV0ZUJ5T2Zmc2V0RGF0YSYgZGF0YSA9IG1fbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERh
dGEoKTsKKworICAgICAgICB1bnNpZ25lZCBtaXNzQ29uZmlndXJhYmxlID0gMDsKKyAgICAgICAg
dW5zaWduZWQgbWlzc05vbmNvbmZpZ3VyYWJsZSA9IDA7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5
SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgaWYgKCF2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQucmVz
dWx0KCkpCisgICAgICAgICAgICAgICAgICAgICsrbWlzc0NvbmZpZ3VyYWJsZTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICsrbWlzc05vbmNvbmZpZ3VyYWJsZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIHVuaXF1ZUNhc2VD
b3VudCA9IGRhdGEudmFyaWFudHMuc2l6ZSgpOworICAgICAgICBpZiAobWlzc0NvbmZpZ3VyYWJs
ZSkKKyAgICAgICAgICAgIHVuaXF1ZUNhc2VDb3VudCAtPSBtaXNzQ29uZmlndXJhYmxlIC0gMTsK
KyAgICAgICAgaWYgKG1pc3NOb25jb25maWd1cmFibGUpCisgICAgICAgICAgICB1bmlxdWVDYXNl
Q291bnQgLT0gbWlzc05vbmNvbmZpZ3VyYWJsZSAtIDE7CisgICAgICAgIGludCB0cnVlQmxvY2sg
PSBtaXNzQ29uZmlndXJhYmxlID8gdW5pcXVlQ2FzZUNvdW50IC0gMSA6IC0xOworICAgICAgICBp
bnQgZmFsc2VCbG9jayA9IG1pc3NOb25jb25maWd1cmFibGUgPyB1bmlxdWVDYXNlQ291bnQgLSAx
IC0gISFtaXNzQ29uZmlndXJhYmxlIDogLTE7CisKKyAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2Nr
LCAyPiBibG9ja3ModW5pcXVlQ2FzZUNvdW50KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmxvY2tzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIGJsb2Nrc1tpXSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGV4aXQgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAg
ICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCBiYXNlU2V0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRz
LnNpemUoKSwgYmxvY2sgPSAwOyBpLS07KSB7CisgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFu
dCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICBjYXNlcy5h
cHBlbmQoU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW2Jsb2Nr
KytdLCBXZWlnaHQoMSkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYXNl
cy5hcHBlbmQoU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW3Zh
cmlhbnQucmVzdWx0KCkgPyB0cnVlQmxvY2sgOiBmYWxzZUJsb2NrXSwgV2VpZ2h0KDEpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgYm9vbCBzdHJ1Y3R1cmVzQ2hlY2tlZCA9IG1faW50ZXJwcmV0ZXIu
Zm9yTm9kZShtX25vZGUtPmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKGJhc2VTZXQp
OworICAgICAgICBlbWl0U3dpdGNoRm9yTXVsdGlCeU9mZnNldChiYXNlLCBzdHJ1Y3R1cmVzQ2hl
Y2tlZCwgY2FzZXMsIGV4aXQpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQubV9uZXh0QmxvY2s7CisKKyAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCAyPiByZXN1
bHRzOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpLCBi
bG9jayA9IDA7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQg
PSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgaWYgKCF2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhibG9ja3NbYmxvY2tdLCBibG9jayArIDEgPCBibG9ja3Muc2l6ZSgpID8gYmxvY2tzW2Js
b2NrICsgMV0gOiBleGl0KTsKKworICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICBMVmFsdWUgc3RvcmFnZTsKKworICAgICAgICAgICAgICAg
IGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgc3RvcmFnZSA9IGJhc2U7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBzdG9yYWdlID0gbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRl
cmZseSk7CisKKyAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KG1fb3V0LmludDY0WmVybywg
c3RvcmFnZSwgZGF0YS5pZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50Lm9mZnNldCgpKTsKKworICAg
ICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW5saW5lVHlw
ZUZsYWdzKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBl
RmxhZ3MoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZvKCku
dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
ICAgICB3ZWFrU3RydWN0dXJlSUQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSksIGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZhcmlh
bnQucmVzdWx0KCkgPyBtX291dC5ib29sZWFuVHJ1ZSA6IG1fb3V0LmJvb2xlYW5GYWxzZSkpOwor
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgKytibG9j
azsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtaXNzTm9uY29uZmlndXJhYmxlKSB7CisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NbZmFsc2VCbG9ja10pOworICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSkpOworICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1pc3NDb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1t0
cnVlQmxvY2tdLCBleGl0KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hv
cihtX291dC5ib29sZWFuVHJ1ZSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZXhpdCwgY29udGludWF0
aW9uKTsKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmVzQ2hlY2tlZCkKKyAgICAgICAgICAgIHNwZWN1
bGF0ZShCYWRDYWNoZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5ib29sZWFuVHJ1ZSk7Cisg
ICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMy
LCByZXN1bHRzKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJl
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDFhMGNmNTlmZmZkM2Mw
YTNhM2RmMjY1M2VhMTMzYTg1OGU0NjAxYzIuLjNlZDMwNDk1MjJiMDIwZmNhNTZiNjI0OGQ0NmY4
OTRmYmY5MTUxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00NDQsMTEgKzQ0
NCwxMSBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9w
ZXJ0eSgKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqPihjZWxsKTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0g
ICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHJ1ZSwgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Ci0KLSAgICBpZiAocGFyc2VJ
bmRleChwcm9wZXJ0eU5hbWUpKQorICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsK
KyAgICAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgICAgIHJldHVy
biB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHJ1ZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CiAgICAgCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCAyNWRmZjUzMzM3ODkxNDI4ZTYyZmE5NTE5ZGUxNGE3
MTk0NGQ0Yjc4Li44YjhlMTc5OTgyODhhNmFiNmY2OGVkOTY3ZDljN2RlN2I3NWNlNzUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yMDExLDEyICsy
MDExLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwg
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUp
OwogICAgICAgICAgICAgc2xvdC5zZXRIaXQob2Zmc2V0KTsKLSAgICAgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSkt
Pm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhp
c09iamVjdCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJm
bHkpOwotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0
ZXJmbHkodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCksIG51bGxwdHIpOwotICAgICAgICAg
ICAgICAgIG9mZnNldCA9IGludmFsaWRPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+bWF4T2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8ICF0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAg
IHRoaXNPYmplY3QtPnNldFN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGQwMjg3OWZlNGNl
ZDUzZDAzMWQwOTM4OWI5MDI0OWExMDg1NDc3NmIuLjY3Mzg0OGVjYzRlYWY0ZDYwNTBjNDg4Mzhh
N2RmMzRlYmRmYTZmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCkBAIC01MzEsMTAgKzUzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHx8IGhpamFja3NJ
bmRleGluZ0hlYWRlcigpOwogICAgIH0KICAgICAKLSAgICBib29sIGhhc0luZGV4aW5nSGVhZGVy
KGNvbnN0IEpTQ2VsbCopIGNvbnN0OwotICAgIGJvb2wgbWF5SGF2ZUluZGV4aW5nSGVhZGVyKCkg
Y29uc3Q7Ci0gICAgYm9vbCBjYW5DYWNoZURlbGV0ZUlDKCkgY29uc3Q7Ci0gICAgCisgICAgYm9v
bCBoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsgICAgCiAgICAgYm9vbCBt
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggZmIy
NzZkODM5YmIxYjhiYjI0MmEzNTA2NjA0YjMyZTIxMDJjODI3Ni4uMTVkYWQyNmY5Yzc4MTg5YzNl
ZGZhOWIxODNhYzczZWE2MTI4NTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjU2LDIyICsyNTYsNiBAQCBpbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QK
ICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUo
KSA9PSBXYXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKLWlubGluZSBib29sIFN0cnVjdHVyZTo6bWF5
SGF2ZUluZGV4aW5nSGVhZGVyKCkgY29uc3QKLXsKLSAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRp
ZXMoaW5kZXhpbmdUeXBlKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghaXNU
eXBlZFZpZXcodHlwZWRBcnJheVR5cGVGb3JUeXBlKG1fYmxvYi50eXBlKCkpKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIFN0cnVj
dHVyZTo6Y2FuQ2FjaGVEZWxldGVJQygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFpc1R5cGVkVmll
dyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpOwotfQotCiBpbmxpbmUgYm9v
bCBTdHJ1Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0NDM4
ZTg2MTk0OThmNjNmODU2ODlhNWM3MWJiOTQ4ZTA4M2QwNTcuLjQzMDA3ZjNhNjYyYTljODgyMTYx
YzY0NzQ3MjgwNDUyNGZhNjNlNGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBN
aWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0
ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1h
bGxvY2F0aW9uLXNpbmtpbmcuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAg
KG5vSW5saW5lLmFzc2VydC5ibGFja2JveCk6CisgICAgICAgIChub0lubGluZS5ibGFja2JveC5k
b0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5kb0FsbG9jMSk6CisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQpOgorICAgICAgICAoYmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2ti
b3gucG9seXZhcmlhbnQpOgorICAgICAgICAoZG9BbGxvYzEpOgorICAgICAgICAobm9JbmxpbmUu
ZG9BbGxvYzEuZG9BbGxvYzIpOgorICAgICAgICAobm9JbmxpbmUuZG9BbGxvYzIpOgorICAgICAg
ICAqIHN0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0LmFzc2VydF90aHJvd3MpOgorICAg
ICAgICAobm9JbmxpbmUuYXNzZXJ0X3Rocm93cy5ibGFja2JveCk6CisgICAgICAgIChub0lubGlu
ZS5ibGFja2JveC50ZXN0U2luZ2xlU3RydWN0dXJlLmRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5s
aW5lLmJsYWNrYm94LnRlc3RTaW5nbGVTdHJ1Y3R1cmUpOgorICAgICAgICAobm9JbmxpbmUudGVz
dFNpbmdsZVN0cnVjdHVyZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLmRvRGVsZXRlMik6Cisg
ICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1
Y3R1cmUuZG9BbGxvYzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZS50
ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RJbmxpbmVT
aW5nbGVTdHJ1Y3R1cmUudGVzdEV4aXQuZG9EZWxldGUzKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUudGVzdEV4aXQpOgorICAgICAgICAobm9JbmxpbmUudGVz
dEV4aXQudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MuZG9BbGxvYzQpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdEV4aXQudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3Quc3Ry
aW5nX2FwcGVhcmVkX2hlcmUuZG9BbGxvYzUpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmds
ZVN0cnVjdHVyZU1pc3MudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QudGVzdFNpbmdsZVN0cnVjdHVy
ZU1pc3NOb25Db25maWd1cmFibGUuZG9BbGxvYzYpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNp
bmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1
cmFibGUpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25m
aWd1cmFibGUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5LmRvQWxsb2M3KToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlLnRlc3RTaW5nbGVT
dHJ1Y3R1cmVFbXB0eSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlRW1w
dHkudGVzdFBvbHltb3JwaGljLmRvRGVsZXRlOCk6CisgICAgICAgIChub0lubGluZS50ZXN0U2lu
Z2xlU3RydWN0dXJlRW1wdHkudGVzdFBvbHltb3JwaGljKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RQb2x5bW9ycGhpYy50ZXN0UG9seXZhcmlhbnQuZG9EZWxldGU5KToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RQb2x5bW9ycGhpYy50ZXN0UG9seXZhcmlhbnQucG9seXZhcmlhbnQpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0UG9seXZhcmlhbnQudGVzdENvbnN0YW50Rm9sZGluZy5kb0RlbGV0ZTEwKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5dmFyaWFudC50ZXN0Q29uc3RhbnRGb2xkaW5nKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RDb25zdGFudEZvbGRpbmcudGVzdE9iamVjdFNpbmtpbmcu
ZG9BbGxvYzExKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDb25zdGFudEZvbGRpbmcudGVzdE9i
amVjdFNpbmtpbmcpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iamVjdFNpbmtpbmcudGVzdFBy
b3h5LmRvQWxsb2MxMik6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqZWN0U2lua2luZy50ZXN0
UHJveHkubm9JbmxpbmUuZG9EZWxldGUxMik6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqZWN0
U2lua2luZy50ZXN0UHJveHkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFByb3h5LnRlc3RUeXBl
ZEFycmF5LmRvRGVsZXRlMTIpOgorICAgICAgICAobm9JbmxpbmUudGVzdFByb3h5LnRlc3RUeXBl
ZEFycmF5KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RUeXBlZEFycmF5LnRlc3RNaXNzTWl4ZWQu
ZG9EZWxldGUxMyk6CisgICAgICAgIChub0lubGluZS50ZXN0VHlwZWRBcnJheS50ZXN0TWlzc01p
eGVkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTWl4ZWQudGVzdE1pc3NOb25NaXhlZC5k
b0RlbGV0ZTE0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTWl4ZWQudGVzdE1pc3NOb25N
aXhlZCk6CisgICAgICAgIChub0lubGluZS50ZXN0TWlzc05vbk1peGVkLnRlc3RCeVZhbC5kb0Rl
bGV0ZTE1KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTm9uTWl4ZWQudGVzdEJ5VmFsKToK
KwogMjAyMC0wMy0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBza2lwIHdhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2MuanMgb24gbWVt
b3J5IGxpbWl0ZWQgZGV2aWNlcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
ZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDY2MzQ2NGYzMTc3Y2I1OWZhNmNmOTI0ZTE0MjI3NDY1OTQwNDEzNQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNp
bmtpbmcuanMKQEAgLTAsMCArMSwyNiBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBX
YXRjaCBTZXJpZXMgMyIKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICgh
Y29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQor
fQorbm9JbmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0dXJu
IHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICBs
ZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJs
YWNrYm94KG9iai55KQorICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgcmV0dXJuIG9iai55
Cit9Citub0lubGluZShkb0FsbG9jMSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwMDsg
KytpKSB7CisgICAgZG9BbGxvYzEoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmN2NiY2Jk
Njk5YjNiMDMyNjdjYjAxZjEyN2EwZjUyMmMxZWI1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJvcGVydHkuanMKQEAgLTAs
MCArMSw0MSBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIK
KworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorCitmdW5jdGlvbiBi
bGFja2JveCh4KSB7CisgICAgcmV0dXJuIHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5j
dGlvbiBwb2x5dmFyaWFudCh4KSB7CisgICAgYXNzZXJ0KGRlbGV0ZSB4LngpCit9CisKK2Z1bmN0
aW9uIGRvQWxsb2MxKCkgeworICAgIGxldCBvYmogPSB7fQorICAgIG9iai54ID0gNQorICAgIG9i
ai55ID0gNworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgcG9seXZhcmlhbnQob2Jq
KQorICAgIHJldHVybiBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzEpCisKK2Z1bmN0aW9uIGRv
QWxsb2MyKCkgeworICAgIGxldCBvYmogPSB7fQorICAgIG9iai54ID0gNQorICAgIG9iai5iID0g
OQorICAgIG9iai55ID0gNworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgcG9seXZh
cmlhbnQob2JqKQorICAgIHJldHVybiBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzIpCisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGRvQWxsb2MxKCkKKyAgICBk
b0FsbG9jMigpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHkt
ZGZnLWlubGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5l
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkzYmVlN2JjYzEyYzlkMmRkN2E0MjgxNjk1MTUwZjNmZmRiMzZhMTIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlu
bGluZS5qcwpAQCAtMCwwICsxLDQwOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgewor
ICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBm
YWlsZWQiKQorfQorbm9JbmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGYp
IHsKKyAgICB0cnkgeworICAgICAgICBmKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgcmV0dXJu
CisgICAgfQorICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lu
bGluZShhc3NlcnRfdGhyb3dzKQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0dXJu
IHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJl
KCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2MxKCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAg
ICAgICAgb2JqLnggPSA1CisgICAgICAgIG9iai55ID0gNworICAgICAgICBvYmoueSA9IGJsYWNr
Ym94KG9iai55KQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAgICAgICByZXR1cm4g
b2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzEpCisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jMSgpCisgICAgfQorfQorbm9J
bmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZSkKKworZnVuY3Rpb24gdGVzdElubGluZVNpbmdsZVN0
cnVjdHVyZSgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTIobykgeworICAgICAgICBhc3NlcnQo
ZGVsZXRlIG8ueCkKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb0FsbG9jMigpIHsKKyAgICAgICAg
bGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAg
ICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgZG9EZWxldGUyKG9iaikKKyAgICAg
ICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MyKQorCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMih7IGksIGY6IDQg
fSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBp
LCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxl
dGUyKHsgaSwgYjogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBhOiA0IH0pCisgICAgICAg
IGRvQWxsb2MyKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsr
aSkgeworICAgICAgICBkb0FsbG9jMigpCisgICAgfQorfQorbm9JbmxpbmUodGVzdElubGluZVNp
bmdsZVN0cnVjdHVyZSkKKworZnVuY3Rpb24gdGVzdEV4aXQoKSB7CisgICAgZnVuY3Rpb24gZG9E
ZWxldGUzKG9iaikgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgIH0KKyAgICBu
b0lubGluZShkb0RlbGV0ZTMpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgKytp
KSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZjogNCB9KQor
ICAgICAgICBkb0RlbGV0ZTMoeyBpLCBlOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGQ6
IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTMo
eyBpLCBiOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTMo
eyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdEV4aXQpCisKK2Z1bmN0aW9uIHRl
c3RTaW5nbGVTdHJ1Y3R1cmVNaXNzKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M0KCkgeworICAg
ICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSA1CisgICAgICAgIG9iai55ID0gNwor
ICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9i
ai56KQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzQp
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0Fs
bG9jNCgpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MpCisKK2Z1
bmN0aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0
IgorCisgICAgZnVuY3Rpb24gZG9BbGxvYzUoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAg
ICAgICBvYmoueSA9IDUKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgIngiLCB7
CisgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQx
CisgICAgICAgIH0pCisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFz
c2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIG9iai54KQorICAgICAgICByZXR1cm4gb2JqLnkKKyAg
ICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzUpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jNSgpCisgICAgfQorfQorbm9JbmxpbmUodGVz
dFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1
cmVNaXNzTm9uQ29uZmlndXJhYmxlKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M2KCkgeworICAg
ICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnkgPSA1CisgICAgICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShvYmosICJ4IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwK
KyAgICAgICAgICAgIHZhbHVlOiA0MQorICAgICAgICB9KQorICAgICAgICBvYmoueSA9IGJsYWNr
Ym94KG9iai55KQorICAgICAgICBhc3NlcnQoIShkZWxldGUgb2JqLngpKQorICAgICAgICByZXR1
cm4gb2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzYpCisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jNigpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUpCisKK2Z1bmN0
aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNygp
IHsKKyAgICAgICAgbGV0IG9iaiA9IHsgYTogMSwgYjogMn0KKyAgICAgICAgb2JqWzFdID0gNQor
ICAgICAgICBkZWxldGUgb2JqWzFdCisgICAgICAgIGJsYWNrYm94KCgpID0+IG9iai54ID0gNSko
KQorICAgICAgICBhc3NlcnQoT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMykKKyAgICAgICAg
YXNzZXJ0KGRlbGV0ZSBvYmouYSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmouYikKKyAgICAg
ICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaiku
bGVuZ3RoID09IDApCisgICAgICAgIG9iai54ID0gNworICAgICAgICByZXR1cm4gb2JqCisgICAg
fQorICAgIG5vSW5saW5lKGRvQWxsb2M3KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzcoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RT
aW5nbGVTdHJ1Y3R1cmVFbXB0eSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljKCkgeworICAg
IGZ1bmN0aW9uIGRvRGVsZXRlOChvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkK
KyAgICAgICAgcmV0dXJuIG9iagorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTgpCisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTgoeyBpLCBh
OiA0IH0pCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgewor
ICAgICAgICBkb0RlbGV0ZTgoeyBpLCBmOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTgo
eyBpLCBlOiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlOCh7
IGksIGQ6IDQgfSkKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgYzogNCB9KQorICAgICAgICBkb0Rl
bGV0ZTgoeyBpLCBiOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTgoeyBpLCBhOiA0LCB5
OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgYTogNCB9KQorICAgIH0K
K30KK25vSW5saW5lKHRlc3RQb2x5bW9ycGhpYykKKworZnVuY3Rpb24gdGVzdFBvbHl2YXJpYW50
KCkgeworICAgIGZ1bmN0aW9uIGRvRGVsZXRlOShvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0
ZSBvYmoueSkKKyAgICAgICAgcmV0dXJuIG9iagorICAgIH0KKworICAgIGZ1bmN0aW9uIHBvbHl2
YXJpYW50KG9iaikgeworICAgICAgICByZXR1cm4gZG9EZWxldGU5KG9iaikKKyAgICB9CisgICAg
bm9JbmxpbmUocG9seXZhcmlhbnQpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7ICsraSkg
eworICAgICAgICBwb2x5dmFyaWFudCh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOSh7IGksIGY6IDQg
fSkKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlOSh7IGksIGU6IDQsIHk6IDEwIH0pLnkgPT09IHVu
ZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGU5KHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0
ZTkoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGI6IDQgfSkKKyAgICAgICAg
YXNzZXJ0KGRvRGVsZXRlOSh7IGksIGE6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBw
b2x5dmFyaWFudCh7IGksIGE6IDQgfSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seXZhcmlh
bnQpCisKK2Z1bmN0aW9uIHRlc3RDb25zdGFudEZvbGRpbmcoKSB7CisgICAgZnVuY3Rpb24gZG9E
ZWxldGUxMChvYmopIHsKKyAgICAgICAgaWYgKCR2bS5kZmdUcnVlKCkpIHsKKyAgICAgICAgICAg
IG9iaiA9IHsgaTogMCwgYTogNSwgeTogMjAgfQorICAgICAgICB9CisgICAgICAgIGFzc2VydChk
ZWxldGUgb2JqLnkpCisgICAgICAgIGFzc2VydCgoZGVsZXRlIG9iai56KSArIDUgPT0gNikKKyAg
ICAgICAgcmV0dXJuIG9iagorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEwKQorCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGRvRGVs
ZXRlMTAoeyBpLCBhOiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVs
ZXRlMTAoeyBpLCBmOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTEwKHsgaSwgZTogNCwg
eTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0RlbGV0ZTEwKHsgaSwgZDogNCB9
KQorICAgICAgICBkb0RlbGV0ZTEwKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTEwKHsg
aSwgYjogNCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDb25zdGFudEZvbGRpbmcpCisKK2Z1
bmN0aW9uIHRlc3RPYmplY3RTaW5raW5nKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2MxMShpKSB7
CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDEKKyAgICAgICAgb2JqLnkg
PSAyCisgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICBvYmouYSA9IDMKKyAgICAgICAg
ZWxzZSBpZiAoaSA9PSAxKQorICAgICAgICAgICAgb2JqLmIgPSAzCisgICAgICAgIGVsc2UgaWYg
KGkgPT0gMykKKyAgICAgICAgICAgIG9iai5jID0gMworICAgICAgICBkZWxldGUgb2JqLngKKyAg
ICAgICAgYXNzZXJ0KChkZWxldGUgb2JqLngpICsgNSA9PSA2KQorICAgICAgICByZXR1cm4gb2Jq
LnkKKworICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMTEpCisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9BbGxvYzExKGkgJSAzKSA9
PSAyKQorICAgIH0KKyAgICBhc3NlcnQoZG9BbGxvYzExKDQpID09IDIpCit9Citub0lubGluZSh0
ZXN0T2JqZWN0U2lua2luZykKKworZnVuY3Rpb24gdGVzdFByb3h5KCkgeworICAgIGZ1bmN0aW9u
IGRvQWxsb2MxMigpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gMQor
ICAgICAgICBvYmouY291bnQgPSAwCisKKyAgICAgICAgY29uc3QgaGFuZGxlciA9IHsKKyAgICAg
ICAgICBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgICAgIGFzc2VydChw
cm9wID09ICJ6IikKKyAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQuegorICAgICAgICAgICAgKytv
YmouY291bnQKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFBy
b3h5KG9iaiwgaGFuZGxlcikKKworICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMTIpCisKKyAg
ICBmdW5jdGlvbiBkb0RlbGV0ZTEyKG9iaikgeworICAgICAgICBkZWxldGUgb2JqLnoKKyAgICB9
CisgICAgbm9JbmxpbmUoZG9EZWxldGUxMikKKworICAgIGxldCBmb28gPSBkb0FsbG9jMTIoKQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRl
MTIoZm9vKQorICAgIH0KKyAgICBhc3NlcnQoZm9vLmNvdW50ID0gMTAwMDAwMCkKK30KK25vSW5s
aW5lKHRlc3RQcm94eSkKKworZnVuY3Rpb24gdGVzdFR5cGVkQXJyYXkoKSB7CisgICAgZnVuY3Rp
b24gZG9EZWxldGUxMihvYmopIHsKKyAgICAgICAgb2JqLmNvbnN0cnVjdG9yID0gbnVsbAorICAg
ICAgICBhc3NlcnQoZGVsZXRlIG9iai5jb25zdHJ1Y3RvcikKKyAgICB9CisgICAgbm9JbmxpbmUo
ZG9EZWxldGUxMikKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7Cisg
ICAgICAgIGRvRGVsZXRlMTIobmV3IFVpbnQ4QXJyYXkoKSkKKyAgICB9CisKKyAgICBsZXQgZm9v
ID0gbmV3IFVpbnQ4QXJyYXkoMTIpOworICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoZm9vLmJ1ZmZl
cikKKyAgICBkb0RlbGV0ZTEyKGZvbykKKyAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBm
b29bMF0pCit9Citub0lubGluZSh0ZXN0VHlwZWRBcnJheSkKKworZnVuY3Rpb24gdGVzdE1pc3NN
aXhlZCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTEzKG9iaikgeworICAgICAgICByZXR1cm4g
ZGVsZXRlIG9iai54CisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTMpCisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUx
Myh7IHk6IDQgfSkpCisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoZm9vLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisg
ICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0
ZTEzKGZvbykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdE1pc3NNaXhlZCkKKworZnVuY3Rpb24g
dGVzdE1pc3NOb25NaXhlZCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTE0KG9iaikgeworICAg
ICAgICByZXR1cm4gZGVsZXRlIG9iai54CisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTQp
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBsZXQg
Zm9vID0ge30KKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAg
ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAg
ICAgIH0pCisgICAgICAgIGFzc2VydCghZG9EZWxldGUxNChmb28pKQorCisgICAgICAgIGZvbyA9
IHsgeTogNCB9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4IiwgeworICAg
ICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MAorICAg
ICAgICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTQoZm9vKSkKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0TWlzc05vbk1peGVkKQorCitmdW5jdGlvbiB0ZXN0QnlWYWwoKSB7CisgICAgZnVu
Y3Rpb24gZG9EZWxldGUxNShvYmopIHsKKyAgICAgICAgcmV0dXJuIGRlbGV0ZSBvYmpbIngiXQor
ICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTE1KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTE1KHsgeTogNCB9KSkKKyAg
ICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4
IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVl
OiA0MQorICAgICAgICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTUoZm9vKSkKKworICAg
ICAgICBmb28gPSB7IHg6IDQgfQorICAgICAgICBhc3NlcnQoZG9EZWxldGUxNShmb28pKQorICAg
ICAgICBhc3NlcnQoZm9vLnggPT0gdW5kZWZpbmVkKQorICAgICAgICBnYygpCisgICAgfQorfQor
bm9JbmxpbmUodGVzdEJ5VmFsKQorCit0ZXN0QnlWYWwoKQordGVzdE1pc3NNaXhlZCgpCit0ZXN0
TWlzc05vbk1peGVkKCkKK3Rlc3RUeXBlZEFycmF5KCkKK3Rlc3RQcm94eSgpCit0ZXN0U2luZ2xl
U3RydWN0dXJlKCkKK3Rlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdEV4aXQoKQordGVz
dFNpbmdsZVN0cnVjdHVyZU1pc3MoKQordGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QoKQor
dGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUoKQordGVzdFNpbmdsZVN0cnVj
dHVyZUVtcHR5KCkKK3Rlc3RQb2x5bW9ycGhpYygpCit0ZXN0UG9seXZhcmlhbnQoKQordGVzdENv
bnN0YW50Rm9sZGluZygpCit0ZXN0T2JqZWN0U2lua2luZygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393551</attachid>
            <date>2020-03-13 16:07:20 -0700</date>
            <delta_ts>2020-03-13 16:21:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200313160719.patch</filename>
            <type>text/plain</type>
            <size>100641</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2E4YTM0Njc3OTczNGIzZmVmNGI2NTU0Y2UzM2I2Y2VmZDY4ZGViLi5hNjdjMmE2ZGE3MjMyYTY2
ZDlmYjZlMTY5MjJiYmE2YmE3YWM2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gd2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBz
dHJ1Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAg
ICAgY3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1
cm5pbmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMs
CisgICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUg
KG9yIGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9n
aWMgZm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0
eSB0byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdo
aWxlIGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0
aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRl
bGV0ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBt
aXNzLCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKwor
ICAgICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUg
aWRlbnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVt
b3ZlcyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYg
d2UgbmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFs
c28gZml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1
cyBvZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAg
ICAgICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2Yg
dGhpcyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKwor
ICAgICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlh
bnQtZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3Bl
cnR5LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0
ZW1wdFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3Ry
dWN0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6
CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0Rl
bGV0ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFu
dDo6b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6
Om5ld1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojpy
ZXN1bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2Zmc2V0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJvcGVydHlVbnNldCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAg
KiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVz
Ojpjb21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6RGVs
ZXRlQnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzbG93VmVy
c2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptZXJnZSk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpt
YXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZSk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1
c01hcC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAg
ICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWNv
cmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNl
czo6bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoK
KyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFjaFZlY3Rvcik6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0
ZUJ5T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFw
aC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9E
RkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TXVsdGlEZWxldGVCeU9mZnNldERhdGE6
OndyaXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Om11bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAg
ICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVy
ZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRl
bnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlI
YXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNhbkNhY2hlRGVsZXRlSUMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTAzLTEyICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRGVsZXRlIElD
IGNyZWF0aW9uIHNob3VsZCBjaGVjayBtYXlOZWVkVG9DaGVja0NlbGwvY2FuQ2FjaGVEZWxldGVJ
QyByZWdhcmRsZXNzIG9mIFN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZmYyMjVlMDcxZDllYjRjYzQ0ZWRlOGVhNmU4NWY0
MWI1YmUyN2U4Li43MTMzMDAwMjdlYjUxNWU4ZWEzM2RlOWUyN2Q2MTg5MDgzZmZkMzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MDEsNiArNTAxLDggQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9Db2Rl
VHlwZS5oCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL0RhdGFG
b3JtYXQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKKyAgICBieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5oCiAgICAg
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YWZjZTAxNWY5MGJi
MjUxMDRjOGI2MWUxYjcyOTVjNjdjYzAxY2IxLi41MDY4ODEwYmRiNWRhNTFlMGZhMTE1MmFlMmYw
OWFlMDY0NTcxZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3OCw3ICsx
MTc4LDkgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVD
QTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEy
MDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJF
IC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87IH07CisJCTczMTFGQTMyMjQwREIxRDMwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRW
YXJpYW50LmggKi87IH07CiAJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3M0FEMDYyOTIzRkY2
NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVC
eVN0YXR1cy5oICovOyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNSZWR1Y2VM
b29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICov
OyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNvbnRleHRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjc5NThEN0ZB
MTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkxRTk1QThFQzAwNTJEN0NE
IC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5NzIsNyArMzk3NCwx
MSBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThC
MDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJF
IC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRW
YXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERl
bGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8q
IERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzNBRDA2
MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
bGV0ZUJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTkzMjJF
MEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMvQjNSZWR1
Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTUy
MkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgcGF0aCA9
IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04MjQxLDYgKzgyNDcsMTAgQEAKIAkJCQkwRkM3MTJERDE3Q0Q4Nzc4
MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJRkU1MDY4
NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8sCiAJCQkJRkU1
MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oICovLAorCQkJCTcz
MTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8sCisJCQkJ
NzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8sCisJCQkJ
NzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLywKKwkJCQk3
M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLywKIAkJCQkwRkJD
MEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovLAogCQkJCTBGQkMw
QUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovLAogCQkJCTBGMkVCQkFB
MURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNhY2hlLmNwcCAqLywKQEAgLTkyMTQs
NiArOTIyNCw4IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291
cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8q
IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIx
REVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRl
UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5
RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBC
QkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMDA5NjY2ODJiNTIyMTQ0YmM0ODkxMDU5ZjM5ZTFiYzI4
NjZjZjljLi43ZmM1YTcxYTdhNjhlM2IwMDYxOTY1MjZhYWYxM2MyMzM2Mzc2N2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTksNiArMjE5LDggQEAgYnl0ZWNvZGUvREZHRXhp
dFByb2ZpbGUuY3BwCiBieXRlY29kZS9EYXRhRm9ybWF0LmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNwcAor
Ynl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCitieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5j
cHAKIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29kZS9FdmFsQ29kZUJs
b2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBiZmMxNTllYzc4
N2QxOTU4MGUxOTA4ZjA0NWVjYzM4NDI4ZjEwYzRjLi5lYjg5YjliODBhNDZhZTRmYjU2Nzk5Njlj
ZDkzODQ4NWUxMTI3ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwCkBAIC0xMjksMTAgKzEyOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
dm0pKTsKLSAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90
IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbCwgZS5nLiBUeXBlZEFycmF5IGNlbGxzIHJlcXVpcmUg
YSBjaGVjayBmb3IgbmV1dGVyaW5nIHN0YXR1cy4KLSAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2Rl
IGJlbG93LgotICAgIGlmICghbmV3U3RydWN0dXJlLT5jYW5DYWNoZURlbGV0ZUlDKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9
CiAKQEAgLTE5NDUsMTggKzE5NDIsOSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0KICAgICAgICAgICAgIGFsbG9j
YXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCi0gICAgICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVh
ZGVyKCk7Ci0gICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQg
d2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4KLSAgICAgICAgLy8gU2VlIFN0cnVj
dHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4KLSAg
ICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5jYW5DYWNoZURlbGV0ZUlDKCkpOwotICAgICAg
ICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ug
b3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KLSAgICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0
dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVh
ZGVyOwotCiAgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOwogCi0g
ICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkpIHsKLSAgICAg
ICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIGJhc2VHUFIpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgeworICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CiAg
ICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA3NDM2OTUzNGU5MGVjNzdhMzE1ZDVl
OWMyMDA4ZjJmYzllYzEyNGZlLi5mY2Y2ZmFhOWM3ZmFiZTUxMjQ0OWJhODY0ZDI1NWY5MGRlODlk
Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMTUwMCw2ICsxNTAwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUucHV0
U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmluU3RhdHVzID0g
cGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21t
b24tPnJlY29yZGVkU3RhdHVzZXMuZGVsZXRlcykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5kZWxldGVTdGF0dXMgPSBw
YWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzM1Nzc3NDkwZTIzYmEwZjZjOWEwMDdlZjk0Y2VlYWU1NThhZTM5NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZh
cmlhbnQuaCIKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTGlz
dER1bXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK0RlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVC
eUlkVmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEFjY2Vzc0Nhc2U6OkFj
Y2Vzc1R5cGUgdHlwZSwKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICA6IG1fcmVzdWx0KHR5cGUg
IT0gQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlKQorICAgICwgbV9vbGRTdHJ1Y3R1
cmUob2xkU3RydWN0dXJlKQorICAgICwgbV9uZXdTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKQorICAg
ICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmll
cikpCit7CisgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzQ2FzZTo6RGVsZXRlIHx8IHR5cGUgPT0g
QWNjZXNzQ2FzZTo6RGVsZXRlTWlzcyB8fCB0eXBlID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU5vbkNv
bmZpZ3VyYWJsZSk7CisgICAgQVNTRVJUKG9sZFN0cnVjdHVyZSk7CisgICAgaWYgKG1fb2Zmc2V0
ID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIEFTU0VSVCghbmV3U3RydWN0dXJlKTsKKyAgICBl
bHNlCisgICAgICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworfQorCitEZWxldGVCeUlkVmFyaWFu
dDo6fkRlbGV0ZUJ5SWRWYXJpYW50KCkgeyB9CisKK0RlbGV0ZUJ5SWRWYXJpYW50OjpEZWxldGVC
eUlkVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgKnRoaXMg
PSBvdGhlcjsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQmIERlbGV0ZUJ5SWRWYXJpYW50OjpvcGVy
YXRvcj0oY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgIG1faWRlbnRpZmll
ciA9IG90aGVyLm1faWRlbnRpZmllcjsKKyAgICBtX3Jlc3VsdCA9IG90aGVyLm1fcmVzdWx0Owor
ICAgIG1fb2xkU3RydWN0dXJlID0gb3RoZXIubV9vbGRTdHJ1Y3R1cmU7CisgICAgbV9uZXdTdHJ1
Y3R1cmUgPSBvdGhlci5tX25ld1N0cnVjdHVyZTsKKyAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zm
c2V0OworICAgIHJldHVybiAqdGhpczsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6YXR0
ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgIGlmICgh
IW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG1fcmVzdWx0ICE9IG90aGVyLm1fcmVzdWx0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAobV9pZGVudGlmaWVyICYmIChtX2lkZW50aWZpZXIgIT0gb3Ro
ZXIubV9pZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2Zm
c2V0ICE9IG90aGVyLm1fb2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
bV9vbGRTdHJ1Y3R1cmUgIT0gb3RoZXIubV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBBU1NFUlQobV9uZXdTdHJ1Y3R1cmUgPT0gb3RoZXIubV9uZXdTdHJ1Y3R1cmUp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGVsZXRlQnlJZFZhcmlhbnQ6OndyaXRl
c1N0cnVjdHVyZXMoKSBjb25zdAoreworICAgIHJldHVybiAhIW5ld1N0cnVjdHVyZSgpOworfQor
Cit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBtX2lkZW50aWZpZXIudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Cit9CisK
K3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIGlmIChtX29sZFN0cnVjdHVyZSkKKyAgICAgICAgbV9vbGRTdHJ1Y3R1cmUtPm1h
cmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9u
ZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5SWRW
YXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgZHVtcEluQ29udGV4
dChvdXQsIDApOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50OjpmaW5hbGl6ZShWTSYgdm0p
Cit7CisgICAgaWYgKCF2bS5oZWFwLmlzTWFya2VkKG1fb2xkU3RydWN0dXJlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhdm0uaGVhcC5pc01hcmtl
ZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCopIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCI8Iik7CisgICAg
b3V0LnByaW50KCJpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgcmVzdWx0PSIsIG1fcmVzdWx0KTsK
KyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiLCAiLCAqbV9vbGRT
dHJ1Y3R1cmUpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIg
LT4gIiwgKm1fbmV3U3RydWN0dXJlKTsKKyAgICBvdXQucHJpbnQoIiwgb2Zmc2V0ID0gIiwgb2Zm
c2V0KCkpOworICAgIG91dC5wcmludCgiPiIpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRl
QnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlk
VmFyaWFudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2YjE2MzVkYjYwNGMyNmIzODlhNTMyOTNiZTk3ZThhZTI3
MDYwNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVsZXRlQnlJZFZhcmlhbnQuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklU
KQorCisjaW5jbHVkZSAiQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIk9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOworc3RydWN0
IER1bXBDb250ZXh0OworCitjbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGVsZXRlQnlJZFZhcmlhbnQoCisgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXIsIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUsCisgICAgICAgIFN0
cnVjdHVyZSogb2xkU3RydWN1dHJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSwgUHJvcGVydHlP
ZmZzZXQpOworCisgICAgfkRlbGV0ZUJ5SWRWYXJpYW50KCk7CisKKyAgICBEZWxldGVCeUlkVmFy
aWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFudCYpOworICAgIERlbGV0ZUJ5SWRWYXJpYW50JiBv
cGVyYXRvcj0oY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKworICAgIFN0cnVjdHVyZSogb2xk
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3U3RydWN0dXJlOyB9CisgICAg
Ym9vbCByZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQorICAgIGJvb2wgd3JpdGVz
U3RydWN0dXJlcygpIGNvbnN0OworCisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9vZmZzZXQ7IH0KKworICAgIGJvb2wgaXNQcm9wZXJ0eVVuc2V0KCkgY29uc3Qg
eyByZXR1cm4gb2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldDsgfQorCisgICAgYm9vbCBhdHRlbXB0
VG9NZXJnZShjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpOworCisgICAgdm9pZCB2aXNp
dEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKKyAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29u
dGV4dCopIGNvbnN0OworCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0IERl
bGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICghIW1faWRlbnRpZmll
ciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAobV9pZGVudGlmaWVyKSB7CisgICAgICAgICAgICBpZiAobV9pZGVudGlmaWVyICE9
IG90aGVyLm1faWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2xkU3RydWN0dXJlID09IG90aGVyLm1fb2xkU3RydWN0
dXJlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRGVsZXRlQnlTdGF0dXM7
CisKKyAgICBib29sIG1fcmVzdWx0OworICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7Cisg
ICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNl
dDsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGVsZXRlQnlTdGF0dXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjOWI3YWRjZjVhZjc2MDMwZTg3ODI1
MmJlZWM0MTgyNmJhMjQ4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMzEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVj
dHMuaCIKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNT
Y29wZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgiCisjaW5jbHVk
ZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgor
I2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBE
T01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOworfQorCitib29sIERlbGV0ZUJ5U3RhdHVzOjph
cHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQoreworICAgIHJl
dHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9CisKK0Rl
bGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2Nr
KiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2Rl
SW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihiYXNlbGluZUJsb2NrLT5tX2xvY2spOworCisgICAgRGVsZXRlQnlTdGF0dXMgcmVzdWx0Owor
CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0
aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFw
LmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlk
RXhpdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VE
X1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CisjaWYgRU5BQkxFKEpJVCkKK0RlbGV0ZUJ5U3RhdHVzOjpEZWxldGVCeVN0YXR1cyhTdHViSW5m
b1N1bW1hcnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3
aXRjaCAoc3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9u
OgorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6
Ok1ha2VzQ2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRN
YWtlc0NhbGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAg
ICAgIG1fc3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1Bh
dGggOiBMaWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5
U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICBj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8pCit7CisgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1
cmVTdHViSW5mbzo6c3VtbWFyeShibG9jay0+dm0oKSwgc3R1YkluZm8pOworICAgIGlmICghaXNJ
bmxpbmVhYmxlKHN1bW1hcnkpKQorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoc3VtbWFy
eSwgKnN0dWJJbmZvKTsKKworICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQu
bV9zdGF0ZSA9IFNpbXBsZTsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgewor
ICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVz
KE5vSW5mb3JtYXRpb24pOworCisgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAg
UG9seW1vcnBoaWNBY2Nlc3MqIGxpc3QgPSBzdHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZv
ciAodW5zaWduZWQgbGlzdEluZGV4ID0gMDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xp
c3RJbmRleCkgeworICAgICAgICAgICAgY29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+
YXQobGlzdEluZGV4KTsKKyAgICAgICAgICAgIEFTU0VSVCghYWNjZXNzLnZpYVByb3h5KCkpOwor
CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUoKTsK
KyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICBzd2l0Y2ggKGFj
Y2Vzcy50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoK
KyAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7Cisg
ICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmll
cigpLCBhY2Nlc3MudHlwZSgpLCBzdHJ1Y3R1cmUsIG51bGxwdHIsIGludmFsaWRPZmZzZXQpOwor
ICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1
bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6IHsKKyAgICAgICAgICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21FeGlzdGlu
Z1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUsIGFjY2Vzcy5pZGVudGlmaWVyKCkudWlk
KCksIG9mZnNldCk7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG9mZnNl
dCA9PSBhY2Nlc3Mub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIGlmICghbmV3U3RydWN0dXJl
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVy
c2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCksIGFjY2Vz
cy50eXBlKCksIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBhY2Nlc3Mub2Zmc2V0KCkpOworCisg
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3Vt
bWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJz
aW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsK
KyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBE
ZWxldGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29t
cHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNl
bGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENh
Y2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisKKyAgICBmb3IgKElD
U3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAgICAgICBJQ1N0YXR1
cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAgICAgICAgYXV0byBibGVz
cyA9IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJlc3VsdCkgLT4gRGVsZXRlQnlTdGF0dXMg
eworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9yaWdpbikpIHsKKyAg
ICAgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVGb3JC
YXNlbGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAs
IGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0
Lm1lcmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoRXhpdEZyb21Jbmxp
bmVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworCisgICAgICAgIGlmIChzdGF0dXMu
c3R1YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQt
Pm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBj
b21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5m
byk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoc3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBibGVzcygqc3RhdHVz
LmRlbGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVGb3JCYXNlbGluZShi
YXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7Cit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6
c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkpCisgICAg
ICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgIHJl
dHVybiBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBEZWxl
dGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90aGVyKQoreworICAgIGlm
IChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1BhdGgo
KSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IERlbGV0
ZUJ5U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7CisgICAgfTsK
KworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAg
ICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTaW1wbGU6Cisg
ICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAgICAgICByZXR1cm4g
bWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlhbnQgOiBvdGhlci5t
X3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgIGNhc2UgT2Jz
ZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgfQor
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBEZWxldGVCeVN0
YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAgIGlmIChtX3N0YXRl
ICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0
Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICByZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAg
fSk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9J
bmZvcm1hdGlvbjsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBEZWxldGVCeVN0YXR1czo6c2lu
Z2xlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0
ID0gbV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3Zhcmlh
bnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciA9IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0g
cmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBt
X3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQor
Cit2b2lkIERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBmb3IgKERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAg
ICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBEZWxldGVCeVN0
YXR1czo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG1fdmFy
aWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGVsZXRl
QnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQo
IigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246Cisg
ICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGUiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIkxpa2Vs
eVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPYnNlcnZlZFRha2Vz
U2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJpbnQoIiwgIiwgbGlzdER1bXAobV92YXJp
YW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNWFkNjAy
YjY1MTcwYzE0NjAyNzM3ZGQ3Y2M4NTU3Njk4ZjVmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApAQCAtMCwwICsxLDEw
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkNh
bGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbmN1
cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUg
IkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKyNpbmNsdWRlICJTdHViSW5m
b1N1bW1hcnkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFjY2Vzc0Nhc2U7CitjbGFz
cyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKKworY2xhc3MgRGVsZXRlQnlT
dGF0dXMgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IGVudW0gU3RhdGUgOiB1aW50OF90IHsKKyAgICAgICAgLy8gSXQncyB1bmNhY2hlZCBzbyB3ZSBo
YXZlIG5vIGluZm9ybWF0aW9uLgorICAgICAgICBOb0luZm9ybWF0aW9uLAorICAgICAgICAvLyBJ
dCdzIGNhY2hlZCBmb3IgYSBzaW1wbGUgYWNjZXNzLgorICAgICAgICBTaW1wbGUsCisgICAgICAg
IC8vIEl0IHdpbGwgbGlrZWx5IHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgTGlrZWx5VGFr
ZXNTbG93UGF0aCwKKyAgICAgICAgLy8gSXQgaGFzIGJlZW4gc2VlbiB0byB0YWtlIHRoZSBzbG93
IHBhdGguCisgICAgICAgIE9ic2VydmVkVGFrZXNTbG93UGF0aCwKKyAgICB9OworCisgICAgRGVs
ZXRlQnlTdGF0dXMoKQorICAgICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKKyAgICB7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgRGVsZXRlQnlTdGF0dXMoU3RhdGUgc3RhdGUpCisgICAgICAg
IDogbV9zdGF0ZShzdGF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdGF0ZSAhPSBTaW1wbGUp
OworICAgIH0KKworICAgIHN0YXRpYyBEZWxldGVCeVN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRl
eHRTdGFjayYgZGZnQ29udGV4dFN0YWNrLCBDb2RlT3JpZ2luKTsKKworICAgIFN0YXRlIHN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorCisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUgIT0gTm9JbmZvcm1hdGlvbjsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KKyAgICBib29sIG9ic2VydmVkU2xvd1BhdGgoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlID09IE9ic2VydmVkVGFrZXNTbG93UGF0aDsgfQorICAgIGJv
b2wgaXNTaW1wbGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZTsgfQorICAgIGNv
bnN0IFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgeyByZXR1cm4gbV92
YXJpYW50czsgfQorICAgIENhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNv
bnN0OworCisgICAgRGVsZXRlQnlTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKworICAgIC8v
IEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4g
c3RydWN0dXJlIHNldC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUuCisgICAgdm9pZCBmaWx0ZXIo
Y29uc3QgU3RydWN0dXJlU2V0Jik7CisKKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNp
dG9yJik7CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmlu
YWxpemUoVk0mKTsKKworICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFy
aWFudCYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgRGVsZXRlQnlTdGF0dXMoU3R1YkluZm9TdW1tYXJ5LCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOworICAgIHZvaWQgbWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmKTsKKworICAg
IHN0YXRpYyBEZWxldGVCeVN0YXR1cyBjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiwgSUNT
dGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBFeGl0RmxhZyk7CisjaWYgRU5BQkxFKEpJVCkKKyAg
ICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2soCisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qKTsKKyNlbmRpZgorCisgICAgVmVjdG9y
PERlbGV0ZUJ5SWRWYXJpYW50LCAxPiBtX3ZhcmlhbnRzOworICAgIFN0YXRlIG1fc3RhdGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lDU3RhdHVzTWFwLmgKaW5kZXggZGJkNWE4ODIzMTI0MjJkNGU4YjJlZGQzYjc5ODIyYzc2N2E3
YmJjOC4uZjAzMTkwMTE1YTNiOGU0MmI0ZWI4Yjg3NDAzYWYyZDg0ZTAzNzRlZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKQEAgLTM3LDYgKzM3LDcg
QEAgY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgR2V0QnlTdGF0dXM7CiBjbGFzcyBJbkJ5SWRTdGF0
dXM7CiBjbGFzcyBQdXRCeUlkU3RhdHVzOworY2xhc3MgRGVsZXRlQnlTdGF0dXM7CiBjbGFzcyBT
dHJ1Y3R1cmVTdHViSW5mbzsKIHN0cnVjdCBCeVZhbEluZm87CiAKQEAgLTQ4LDYgKzQ5LDcgQEAg
c3RydWN0IElDU3RhdHVzIHsKICAgICBHZXRCeVN0YXR1cyogZ2V0U3RhdHVzIHsgbnVsbHB0ciB9
OwogICAgIEluQnlJZFN0YXR1cyogaW5TdGF0dXMgeyBudWxscHRyIH07CiAgICAgUHV0QnlJZFN0
YXR1cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9OworICAgIERlbGV0ZUJ5U3RhdHVzKiBkZWxldGVT
dGF0dXMgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgSUNT
dGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4
IGM5NDg0YjQ4NWFkZmU2ZGFiNGNjZjJiN2FhNjQ1YmY3ODg5ODA4MzIuLmQ2MTVhMTNkOWMzYzQ3
NWE2MTZjMmU1NDc3Mjk1NTQ2MTY5YzQ0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTM0LDYgKzM0LDcgQEAgUmVj
b3JkZWRTdGF0dXNlcyYgUmVjb3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVz
ZXMmJiBvdGhlcikKICAgICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKICAgICBwdXRzID0g
V1RGTW92ZShvdGhlci5wdXRzKTsKICAgICBpbnMgPSBXVEZNb3ZlKG90aGVyLmlucyk7CisgICAg
ZGVsZXRlcyA9IFdURk1vdmUob3RoZXIuZGVsZXRlcyk7CiAgICAgc2hyaW5rVG9GaXQoKTsKICAg
ICByZXR1cm4gKnRoaXM7CiB9CkBAIC03NSwxMCArNzYsMjAgQEAgSW5CeUlkU3RhdHVzKiBSZWNv
cmRlZFN0YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCitEZWxldGVCeVN0YXR1cyogUmVjb3JkZWRT
dGF0dXNlczo6YWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwg
Y29uc3QgRGVsZXRlQnlTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1h
a2VVbmlxdWU8RGVsZXRlQnlTdGF0dXM+KHN0YXR1cyk7CisgICAgRGVsZXRlQnlTdGF0dXMqIHJl
c3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBkZWxldGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiBz
bG90VmlzaXRvcikKIHsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQogICAgICAgICBwYWly
LnNlY29uZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFp
ciA6IGRlbGV0ZXMpCisgICAgICAgIHBhaXIuc2Vjb25kLT52aXNpdEFnZ3JlZ2F0ZShzbG90Vmlz
aXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImIHNsb3RWaXNpdG9yKQpAQCAtODksNiArMTAwLDggQEAgdm9pZCBSZWNvcmRlZFN0YXR1c2Vz
OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCiAgICAgICAgIHBhaXIuc2Vj
b25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogaW5z
KQogICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAgIGZv
ciAoYXV0byYgcGFpciA6IGRlbGV0ZXMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVh
cChzbG90VmlzaXRvcik7CiB9CiAKIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6ZmluYWxpemVXaXRo
b3V0RGVsZXRpbmcoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZWNvcmRlZFN0YXR1c2VzLmgKaW5kZXggYjM1NWU5YjYyMzM4NDYyOTI2NDgyYzdjMWI5MWY0
MjFmZmU2MjBkMC4uOWU3MDU1ZDI0M2YyNGFhNmFmNWFhMDkyYWQzMDJlZjE1YThkMDU3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3Rh
dHVzLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlTdGF0dXMuaCIKICNpbmNsdWRlICJHZXRCeVN0YXR1
cy5oIgogI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMu
aCIKQEAgLTQ3LDYgKzQ4LDcgQEAgc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewogICAgIEdldEJ5
U3RhdHVzKiBhZGRHZXRCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlTdGF0
dXMmKTsKICAgICBQdXRCeUlkU3RhdHVzKiBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mLCBjb25zdCBQdXRCeUlkU3RhdHVzJik7CiAgICAgSW5CeUlkU3RhdHVzKiBhZGRJbkJ5SWRT
dGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEluQnlJZFN0YXR1cyYpOworICAgIERlbGV0
ZUJ5U3RhdHVzKiBhZGREZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgRGVs
ZXRlQnlTdGF0dXMmKTsKICAgICAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
Jik7CiAgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwpAQCAtNjMsMTIgKzY1LDE0
IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICAgICAgZnVuYyhnZXRzKTsKICAgICAg
ICAgZnVuYyhwdXRzKTsKICAgICAgICAgZnVuYyhpbnMpOworICAgICAgICBmdW5jKGRlbGV0ZXMp
OwogICAgIH0KICAgICAKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5p
cXVlX3B0cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENv
ZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeVN0YXR1cz4+PiBnZXRzOwogICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFB1dEJ5SWRTdGF0dXM+Pj4g
cHV0czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxJ
bkJ5SWRTdGF0dXM+Pj4gaW5zOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3Rk
Ojp1bmlxdWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0ZXM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBlOTU4MDBhZmYyNjc5NWE0MmQ5NDYzOTRj
YmRlNTMwOTY4OGNkYzQ2Li4yMWYwMDNhMTkwZTVjY2JiZGZhMDY4NDVjMDZlYzYyMTU3NzZhNDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCkBAIC0zNzA5LDYgKzM3MDksNDEgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogeworICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAgVHJhbnNpdGlvblZl
Y3RvciB0cmFuc2l0aW9uczsKKworICAgICAgICAvLyBPcmRpbmFyaWx5IHlvdSBoYXZlIHRvIGJl
IGNhcmVmdWwgd2l0aCBjYWxsaW5nIHNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZygpCisgICAg
ICAgIC8vIGJlY2F1c2Ugb2YgdGhlIGVmZmVjdCBvbiBjb21waWxlIHRpbWVzLCBidXQgdGhpcyBu
b2RlIGlzIEZUTC1vbmx5LgorICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9s
ZGluZyh0cnVlKTsKKworICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2UgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBpZiAobm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEo
KS53cml0ZXNTdHJ1Y3R1cmVzKCkpCisgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlclN0cnVjdHVy
ZXMoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zm
c2V0RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgY29uc3QgRGVs
ZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgp
LnZhcmlhbnRzW2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB0aGlzU2V0
ID0gKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgdGhpc1NldC5maWx0ZXIoYmFzZSk7CisgICAgICAgICAgICBpZiAodGhpc1NldC5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICh2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBuZXdTdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgVHJhbnNpdGlvbihtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQub2xkU3RydWN0dXJlKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBuZXdT
ZXQuYWRkKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBuZXdTZXQubWVyZ2UodGhpc1NldCk7CisgICAgICAgIH0KKworICAgICAgICBvYnNlcnZlVHJh
bnNpdGlvbnMoY2xvYmJlckxpbWl0LCB0cmFuc2l0aW9ucyk7CisgICAgICAgIGlmIChmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5jaGFuZ2VTdHJ1Y3R1cmUobV9ncmFwaCwgbmV3U2V0KSA9PSBDb250
cmFkaWN0aW9uKQorICAgICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6IHsKICAg
ICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CkBA
IC00MTA2LDYgKzQxNDEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgRmls
dGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAg
Y2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBicmVhazsKIApAQCAtNDI4Nyw2ICs0MzIz
LDEzIEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRl
cklDU3RhdHVzKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
RmlsdGVyRGVsZXRlQnlTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5kZWxldGVCeVN0YXR1cygpLT5maWx0ZXIodmFs
dWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNTNiMDE0ODNlZDQxNDkwODQ4
NzUxZGRiMzM2OWQyMTZiY2I1ZDVjOC4uYmU2NzEyMWNlMzEzODVkZmQ5NWU3ZGI0MTg5YmQ4Y2Nm
Nzg5ODgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC00MDcsNiArNDA3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZp
bHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2Ug
Q2hlY2tBcnJheU9yRW1wdHk6CkBAIC0xMjY2LDcgKzEyNjcsOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6IHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbGlt
aW5hdGVkQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCkpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZShtX2dyYXBo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggZTZkNWI2NWE0ZDAxMTZjNjg2YWUwNmUxMThjZDdmY2E5Mzc2NzFjZi4uY2Q3NjY5NDc5
NGI2MzZiOTljYTkwYzY4ZjliYTRiMmYwZTIzYjAzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNs
dWRlICJERkdDbG9iYmVyc0V4aXRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5j
bHVkZSAiREZHSklUQ29kZS5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJHZXRCeVN0YXR1cy5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgpAQCAtMjQ5LDYgKzI1MCw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBoYW5kbGVQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1cyYsCiAgICAgICAgIGJvb2wg
aXNEaXJlY3QsIHVuc2lnbmVkIGludHJ1Y3Rpb25TaXplKTsKKworICAgIHZvaWQgaGFuZGxlRGVs
ZXRlQnlJZCgKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cyk7CiAgICAgCiAgICAg
Ly8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBlbWl0IGEgY2hlY2sgZm9yIHRoaXMg
Y29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAgIC8vIGNvbmRpdGlvbiBubyBsb25n
ZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJsZSBjaGVjayBjYW4gYmUgZW1pdHRl
ZC4KQEAgLTQ2MTQsNiArNDYxOCwxMDQgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCgKICAgICAgICAgZ2V0dGVyLCBudW1iZXJPZlBhcmFtZXRlcnMgLSAxLCByZWdpc3Rlck9m
ZnNldCwgKnZhcmlhbnQuY2FsbExpbmtTdGF0dXMoKSwgcHJlZGljdGlvbik7CiB9CiAKK3ZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0ZUJ5SWQoCisgICAgVmlydHVhbFJlZ2lzdGVyIGRl
c3RpbmF0aW9uLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAorICAgIERl
bGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzKQoreworICAgIGlmICghZGVsZXRlQnlTdGF0dXMu
aXNTaW1wbGUoKSB8fCAhZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgfHwgIU9wdGlv
bnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAg
ICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciks
IGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWxldGVCeVN0YXR1
cy52YXJpYW50cygpLnNpemUoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fcGxhbi5p
c0ZUTCgpCisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZygpCisgICAgICAgICAgICB8fCBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAg
ICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxl
dGVCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIGJhc2UpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyRGVsZXRlQnlTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkRGVsZXRlQnlT
dGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwgYmFzZSk7CisKKyAg
ICAgICAgYm9vbCBoYXNIaXQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNNaXNzID0gZmFsc2U7
CisgICAgICAgIGJvb2wgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSA9IGZhbHNlOworCisgICAgICAg
IGZvciAoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1cy52
YXJpYW50cygpKSB7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQu
bmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIGhhc0hpdCA9IHRydWU7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHZhcmlhbnQucmVzdWx0KCkpCisgICAgICAgICAgICAgICAgaGFzTWlz
cyA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaGFzTWlzc05vbmNv
bmZpZ3VyYWJsZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWhhc0hpdCkgewor
ICAgICAgICAgICAgaWYgKChoYXNNaXNzICYmICFoYXNNaXNzTm9uY29uZmlndXJhYmxlKSB8fCAo
IWhhc01pc3MgJiYgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkpIHsKKyAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmVTZXQgYmFzZVNldDsKKworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRGVsZXRl
QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpKQorICAgICAg
ICAgICAgICAgICAgICBiYXNlU2V0LmFkZCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKworICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldChiYXNlU2V0KSksIGJhc2UpOworICAgICAgICAgICAgICAgIHNldChkZXN0
aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4oZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVsw
XS5yZXN1bHQoKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3Jh
cGgubV9tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFu
dHMgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpOworICAgICAgICBkYXRhLT5pZGVudGlmaWVy
TnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAg
ICAgICAgICAgYWRkVG9HcmFwaChNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJh
c2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChkZWxldGVCeVN0YXR1
cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKKyAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50
ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsKKworICAgIGlmICghdmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBP
cEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2UpOworICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9u
LCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJy
ZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1cykpLCBiYXNlKTsKKyAgICBhZGRUb0dyYXBo
KENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgQVNT
RVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KHZh
cmlhbnQub2Zmc2V0KCkpKTsKKworICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKKyAgICBUcmFu
c2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAg
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpCisgICAgICAgIHByb3BlcnR5U3RvcmFn
ZSA9IGJhc2U7CisgICAgZWxzZQorICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldEJ1dHRlcmZseSwgYmFzZSk7CisKKyAgICBTdG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1f
Z3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsKKyAgICBkYXRhLT5vZmZzZXQgPSB2YXJp
YW50Lm9mZnNldCgpOworICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVt
YmVyOworCisgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgUHV0QnlPZmZzZXQsCisgICAgICAgIE9w
SW5mbyhkYXRhKSwKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAgICAgICBiYXNlLAorICAg
ICAgICBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1
cmUsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgc2V0KGRlc3RpbmF0aW9uLCBqc0Nv
bnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkpOworICAgIHJldHVybjsKK30KKwog
dm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQoCiAgICAgTm9kZSogYmFzZSwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1
dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QpCiB7CkBAIC01OTQ0LDE1ICs2MDQ2LDQ5IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcERlbEJ5SWQ+KCk7CiAg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlm
aWVyUmVtYXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBi
YXNlKSk7CisgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBkZWxldGVCeVN0YXR1cyA9IERlbGV0
ZUJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jh
c2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRDb2Rl
T3JpZ2luKCkpOworICAgICAgICAgICAgaGFuZGxlRGVsZXRlQnlJZChieXRlY29kZS5tX2RzdCwg
YmFzZSwgaWRlbnRpZmllck51bWJlciwgZGVsZXRlQnlTdGF0dXMpOwogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfZGVsX2J5X2lkKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZGVs
X2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BEZWxCeVZhbD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNv
ZGUubV9iYXNlKTsKLSAgICAgICAgICAgIE5vZGUqIGtleSA9IGdldChieXRlY29kZS5tX3Byb3Bl
cnR5KTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChEZWxldGVC
eVZhbCwgYmFzZSwga2V5KSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRl
Y29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAgIGJvb2wgc2hvdWxkQ29tcGlsZUFzRGVsZXRl
QnlJZCA9IGZhbHNlOworICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMg
PSBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Q29kZU9yaWdpbigpKTsKKworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IDA7CisKKyAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAg
JiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CisKKyAg
ICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gZGVsZXRl
QnlTdGF0dXMuc2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBpZGVudGlmaWVyLnVpZCgpOworICAgICAgICAgICAgICAgICAg
ICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlm
aWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNDZWxsKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBo
LmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICBzaG91
bGRDb21waWxlQXNEZWxldGVCeUlkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChzaG91bGRDb21waWxlQXNEZWxldGVCeUlkKQorICAg
ICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50
aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2Us
IHByb3BlcnR5KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfdmFsKTsKICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4
IGIyMzE4ZmUwM2FlZDQxZTAzMDk1ODdlN2RmOTA3NjljYjA0ZTNjNDkuLjcwOTQzZTA1ZWQyOWMy
Yzk5MTE5N2E1ZTJiYzUyZjI2ZjZiYjg3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCkBAIC00NzMsNiArNDczLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRl
RnUKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0
ZUJ5U3RhdHVzOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAg
ICAgICAgIApAQCAtMTI4NCw2ICsxMjg1LDE3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hp
bGQxKCkpLCBMYXp5Tm9kZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogeworICAgICAgICByZWFk
KEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsK
KyAgICAgICAgQWJzdHJhY3RIZWFwIGhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5tdWx0aURl
bGV0ZUJ5T2Zmc2V0RGF0YSgpLmlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICB3cml0ZShoZWFw
KTsKKyAgICAgICAgaWYgKG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkud3JpdGVzU3Ry
dWN0dXJlcygpKQorICAgICAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAg
ICAgZGVmKEhlYXBMb2NhdGlvbihOYW1lZFByb3BlcnR5TG9jLCBoZWFwLCBub2RlLT5jaGlsZDEo
KSksIExhenlOb2RlKGdyYXBoLmZyZWV6ZVN0cm9uZyhKU1ZhbHVlKCkpKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKICAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG5vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCkuaWRl
bnRpZmllck51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggZWU5OGZhYzIzMDUzNDk5MzA1OTQ4YTdjNDAyZGYzOGQy
YmYwNmRlYi4uZjE3NDVlY2FhMDE1YTk2ZGViZjBkYzFhOWJhYTkyODEyMWQzOTY1OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAK
QEAgLTg2LDYgKzg2LDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgLy8gVGhlc2UgZG8gY2xvYmJlciBtZW1vcnksIGJ1
dCBub3RoaW5nIHRoYXQgaXMgb2JzZXJ2YWJsZS4gSXQgbWF5IGJlIG5pY2UgdG8gc2VwYXJhdGUg
dGhlCiAgICAgICAgIC8vIGhlYXBzIGludG8gdGhvc2UgdGhhdCBhcmUgb2JzZXJ2YWJsZSBhbmQg
dGhvc2UgdGhhdCBhcmVuJ3QsIGJ1dCB3ZSBkb24ndCBkbyB0aGF0IHJpZ2h0IG5vdy4KICAgICAg
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg0
NDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAKaW5kZXggYjQzZjdjZjU0ZTEyMTc0NzE3NmRkY2U5NjViNmM4MThmMjkxNjE4
NS4uMTM3OWZhYzgzMDZjM2UyMjhjYzlkYzIyNzRiNTRlZDg1ZjQwNDAzZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
QEAgLTUwOSw2ICs1MDksMzYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OiB7CisgICAgICAgICAgICAgICAgRWRnZSBiYXNl
RWRnZSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBiYXNl
RWRnZS5ub2RlKCk7CisgICAgICAgICAgICAgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEmIGRh
dGEgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpOworCisgICAgICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSBiYXNlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoYmFzZSk7CisKKyAgICAg
ICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gUHVzaCBD
RkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisgICAgICAg
ICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVmYXVs
dCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCisKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA9IGRhdGEudmFy
aWFudHNbaV07CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUuY29udGFpbnMo
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEudmFyaWFudHNbaS0tXSA9IGRhdGEudmFyaWFudHMu
bGFzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS52YXJpYW50cy5yZW1vdmVMYXN0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGRhdGEudmFyaWFudHMuc2l6ZSgpICE9IDEp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZW1pdERlbGV0
ZUJ5T2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VW
YWx1ZSwgZGF0YS52YXJpYW50c1swXSwgZGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAg
ICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
IHsKICAgICAgICAgICAgICAgICBFZGdlIGJhc2VFZGdlID0gbm9kZS0+Y2hpbGQxKCk7CkBAIC0x
MzA4LDYgKzEzMzgsNDQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjaGlsZEVkZ2UpOwog
ICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBlbWl0RGVsZXRlQnlPZmZzZXQodW5zaWduZWQg
aW5kZXhJbkJsb2NrLCBOb2RlKiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUs
IGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyKQorICAgIHsKKyAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgb3JpZ2luLmV4aXRPSyk7CisgICAgICAg
IGFkZEJhc2VDaGVjayhpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAgICAgIG5vZGUtPmNo
aWxkMSgpLnNldFVzZUtpbmQoS25vd25DZWxsVXNlKTsKKworICAgICAgICBpZiAoIXZhcmlhbnQu
bmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQo
bm9kZSwganNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKTsKKyAgICAgICAgICAgIG5vZGUtPm9y
aWdpbiA9IG5vZGUtPm9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBtX2dyYXBo
Lm1fdHJhbnNpdGlvbnMuYWRkKAorICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpKSk7CisKKyAgICAgICAgRWRnZSBwcm9wZXJ0eVN0b3JhZ2U7CisK
KyAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAg
ICAgcHJvcGVydHlTdG9yYWdlID0gbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IEVkZ2UobV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIG9y
aWdpbiwgbm9kZS0+Y2hpbGQxKCkpKTsKKworICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgZGF0
YSA9ICptX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAgICAgIGRhdGEub2Zm
c2V0ID0gdmFyaWFudC5vZmZzZXQoKTsKKyAgICAgICAgZGF0YS5pZGVudGlmaWVyTnVtYmVyID0g
aWRlbnRpZmllck51bWJlcjsKKworICAgICAgICBOb2RlKiBjbGVhclZhbHVlID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBKU0NvbnN0YW50LCBvcmln
aW4sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZVN0cm9uZyhKU1ZhbHVlKCkpKSk7CisgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNO
b25lLCBQdXRCeU9mZnNldCwgb3JpZ2luLCBPcEluZm8oJmRhdGEpLCBwcm9wZXJ0eVN0b3JhZ2Us
IG5vZGUtPmNoaWxkMSgpLCBFZGdlKGNsZWFyVmFsdWUpKTsKKyAgICAgICAgbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFB1dFN0
cnVjdHVyZSwgb3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpLCBPcEluZm8odHJhbnNpdGlvbiksCisg
ICAgICAgICAgICBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29u
c3RhbnQobm9kZSwganNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKTsKKyAgICAgICAgbm9kZS0+
b3JpZ2luID0gbm9kZS0+b3JpZ2luLndpdGhJbnZhbGlkRXhpdCgpOworICAgIH0KICAgICAKICAg
ICB2b2lkIGFkZEJhc2VDaGVjaygKICAgICAgICAgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBOb2Rl
KiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0IFN0cnVjdHVyZVNl
dCYgc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNj
OGZkNWRjZjhmYTJlZmJhMzdmOTZkYzkwOTlkNDk3MjUxODEuLjkyYzAzOGYwNTkwMmVlOGMzMTBj
NWExMTNkNjQ5NWQwNTA1MTBjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxh
Z3M6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9m
ZnNldDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2Ug
SW50NTJSZXA6CkBAIC0yNDUsNiArMjQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBEYXRlR2V0SW50MzJPck5hTjoKICAgICBjYXNl
IERhdGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBlOTdkZTEwZjZmNGNkYzE1YmFlZmIx
MGI3ZWM2MDYyODI3ODM1OTU1Li4xNDJkNzhiOGM0MzY4MWZjMzNmZmYzMGI2ZTliOGQyOGRiODk5
ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAg
LTE4MTUsNiArMTgxNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAg
ICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogSW50cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRjaFN0cnVjdHVyZSB0aGF0IGRvZXNu
J3QgZG8gYSBjZWxsIGNoZWNrLgpAQCAtMjU4MCw2ICsyNTg1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAg
ICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggNjllMjkwMGFlZGQ2OWQyNDU1
ZjI1MTQzMzJmY2Q5NDU3NThlMWIwZi4uYWYyODI2NzNlNDVjMjcxZWY4NTNkOWMyMmViZjlhYTcx
NjNlNWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTMwMiw2
ICszMDIsMTIgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFy
KiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250ZXgKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLnZhcmlhbnRzW2ldLCBjb250ZXh0KSk7CiAgICAg
fQorICAgIGlmIChub2RlLT5oYXNNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpKSB7CisgICAgICAg
IE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNl
dERhdGEoKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWQiLCBkYXRhLmlkZW50aWZpZXJO
dW1iZXIsICJ7IiwgaWRlbnRpZmllcnMoKVtkYXRhLmlkZW50aWZpZXJOdW1iZXJdLCAifSIpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRhdGEudmFyaWFudHNb
aV0sIGNvbnRleHQpKTsKKyAgICB9CiAgICAgaWYgKG5vZGUtPmhhc01hdGNoU3RydWN0dXJlRGF0
YSgpKSB7CiAgICAgICAgIGZvciAoTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50JiB2YXJpYW50IDogbm9k
ZS0+bWF0Y2hTdHJ1Y3R1cmVEYXRhKCkudmFyaWFudHMpCiAgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsIGluQ29udGV4dCgqdmFyaWFudC5zdHJ1Y3R1cmUuZ2V0KCksIGNvbnRleHQpLCAiPT4i
LCB2YXJpYW50LnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXgg
OTQ3ZWZhYWJhOWU2NDk2YjNiMDVjNmY1NTE0MmFiN2M3N2I1YjVhMi4uMmMyNTE5NmZiMDVjNDk3
Nzk0YjVkZGZjNjYxZGM3N2ZmMWEwZTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaApAQCAtMTEwMCw2ICsxMTAwLDcgQEAgcHVibGljOgogICAgIEJhZzxTd2l0Y2hEYXRhPiBt
X3N3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlP
ZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zm
c2V0RGF0YTsKKyAgICBCYWc8TXVsdGlEZWxldGVCeU9mZnNldERhdGE+IG1fbXVsdGlEZWxldGVC
eU9mZnNldERhdGE7CiAgICAgQmFnPE1hdGNoU3RydWN0dXJlRGF0YT4gbV9tYXRjaFN0cnVjdHVy
ZURhdGE7CiAgICAgQmFnPE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE+IG1fb2JqZWN0TWF0ZXJp
YWxpemF0aW9uRGF0YTsKICAgICBCYWc8Q2FsbFZhcmFyZ3NEYXRhPiBtX2NhbGxWYXJhcmdzRGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBl
MTAxNTUzYjE5YWY1MTM0NDJjMDNlYmVlYzA0ODBmMmIuLjFjY2E4YjJhYzQxY2JlN2Y0OTZkM2M5
NmE3YjhkZDEwMDAyZDU4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcApAQCAtMTA5LDYgKzEwOSw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJ
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5k
ZXggZGNiMmI1OWRjYWNiYjIxOTNhODJhMGI5NzMzMzk5ZjA1NzQyYTQzOC4uZjczYWY2MDAxMWMx
NTAxZDA4MGIxZWUwNmJjN2IwYWE2NWMzNmQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuY3BwCkBAIC01Nyw2ICs1NywxNSBAQCBib29sIE11bHRpUHV0QnlPZmZzZXREYXRhOjpy
ZWFsbG9jYXRlc1N0b3JhZ2UoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBN
dWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YTo6d3JpdGVzU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gdmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmICh2
YXJpYW50c1tpXS53cml0ZXNTdHJ1Y3R1cmVzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEJyYW5jaFRhcmdldDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghYmxvY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCmluZGV4IDEzNDU1YjVjMjlmMDcwZmVmMmY5OTE5NTJiY2ZmMDA3ZmVh
OTE3MjYuLjA5ODZmOWE3MWZjYzE3OTg3NTdmNGFlZWRkOWFiNDYyOTFjOGY0YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiREZH
VHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCIKKyNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgogI2luY2x1
ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUg
Ik9wZXJhbmRzLmgiCkBAIC05Miw2ICs5MywxMyBAQCBzdHJ1Y3QgTXVsdGlQdXRCeU9mZnNldERh
dGEgewogICAgIGJvb2wgcmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29uc3Q7CiB9OwogCitzdHJ1Y3Qg
TXVsdGlEZWxldGVCeU9mZnNldERhdGEgeworICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXI7
CisgICAgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAyPiB2YXJpYW50czsKKworICAgIGJvb2wg
d3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OworfTsKKwogc3RydWN0IE1hdGNoU3RydWN0dXJlVmFy
aWFudCB7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmU7CiAgICAgYm9vbCByZXN1
bHQ7CkBAIC0yMDE0LDYgKzIwMjIsMTcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaGFzTXVs
dGlQdXRCeU9mZnNldERhdGEoKSk7CiAgICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8TXVsdGlQ
dXRCeU9mZnNldERhdGEqPigpOwogICAgIH0KKworICAgIGJvb2wgaGFzTXVsdGlEZWxldGVCeU9m
ZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gTXVsdGlEZWxldGVCeU9m
ZnNldDsKKyAgICB9CisKKyAgICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSYgbXVsdGlEZWxldGVC
eU9mZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc011bHRpRGVsZXRlQnlPZmZz
ZXREYXRhKCkpOworICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPE11bHRpRGVsZXRlQnlPZmZz
ZXREYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNNYXRjaFN0cnVjdHVyZURhdGEo
KQogICAgIHsKQEAgLTI5NzYsNiArMjk5NSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc0RlbGV0
ZUJ5U3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOworICAgIH0KKworICAgIERlbGV0ZUJ5U3RhdHVzKiBkZWxldGVCeVN0YXR1cygpCisg
ICAgeworICAgICAgICBBU1NFUlQoaGFzRGVsZXRlQnlTdGF0dXMoKSk7CisgICAgICAgIHJldHVy
biBtX29wSW5mby5hczxEZWxldGVCeVN0YXR1cyo+KCk7CisgICAgfQorCiAgICAgdm9pZCBkdW1w
Q2hpbGRyZW4oUHJpbnRTdHJlYW0mIG91dCkKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQxKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZTIxMWVhNzdkODU0
MTk5YmI4NDYzZmFlYzM3YmY1YzQxYzVmOTdlNy4uZDEzNjcwMWU3Yjc2NmY0NjgwMzM5YjAxNTE2
ZmYwZmQxZTBjNDc3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApA
QCAtMjUyLDYgKzI1Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhNdWx0aUdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhN
dWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oTXVsdGlEZWxl
dGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRWZWN0b3JM
ZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zm
c2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKQEAgLTUyNiw2ICs1MjcsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmlsdGVyR2V0QnlTdGF0dXMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oRmlsdGVyRGVsZXRlQnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEludCwgTm9k
ZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgLyogVGhlIGdldHMgYXJlIG11c3QgZ2VuZXJh
dGUgZm9yIG5vdyBiZWNhdXNlIHRoZXkgZG8gYm91bmRzIGNoZWNrcyAqLyBcCiAgICAgbWFjcm8o
RGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlhNzNi
MzQ5ZWU3NzliNWI5ODQuLmQwMGVhNjFlYTI5NWQxNjcwM2Y1NjY1NjhmYWU5OTcxNjUxYTExOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtMTIyMCw2ICsxMjIwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNTcwLDYgKzI1NzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
ICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91dENoZWNrcygpOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1
YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uOGYxOTI2MDgwNTY2OTQ3YmFiYTAyZjE3NzZiNTQw
OTRiMTBlMGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4NCw2ICs5ODQsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAgIGNh
c2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgICAg
ICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6CiAgICAgICAgIGNh
c2UgQ29tcGFyZUxlc3NFcToKQEAgLTEzOTUsNiArMTM5Niw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVy
RGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAg
Y2FzZSBEYXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUxYjJk
MTQyOWIyZTA1NjRlNjAxYTBjN2ZjOTY2NGI1NWVhYy4uZDZlN2M5ZTMwODU3MjI0YzgyNTg1Njgy
Y2FiNmQwN2FlN2QxZTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwog
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hl
cmUgb3RoZXIgdGhhbiB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCiAgICAg
ICAgIC8vIHRvIGNhcHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxv
dyBoZXJlIHRoZSB1c2VyIHB1dCB0aGVtLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MDgs
NiArNjA5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEludmFsaWRhdGlv
blBvaW50OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIEdldEVudW1lcmFibGVM
ZW5ndGg6CiAgICAgY2FzZSBIYXNHZW5lcmljUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1
cmVQcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGU2MTUxNTE3NTA0Y2IyNTdlZTNiNTgyMzhmZmE4MmRh
YjcyOTg2ODQuLmYxMTE0ZjFkYjhkYzkwYzljODRkNTU4ZDAxOTg3ZWQzZDA3ZmQyZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcApAQCAtNDE5MCw2ICs0MTkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMo
bm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQyMDgs
NiArNDIwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBN
dWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNl
IENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5l
d09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IGM4YzE3ZjJhZmQzM2EwYjQyZmVmNjQ1YWJmM2FiZjA2YmM1OTZkNDcu
LjkwNzk1YWQ2ZDk4MDhmYjg2YTJkYmZjMGYzNTY1NGFlMTdlMWE4MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTI1NSw2
ICs1MjU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgog
ICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0
dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAgICAg
IG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTUyNjksNiArNTI3MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFyaXRoSU11
bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAg
ICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAK
aW5kZXggN2M3YWJlODNlMjNhNWQ4OGEzMjA4M2E1MGVkZjM0ZDM2Y2Q2MzY5Yi4uOTJkMGM4ZjFj
NDU2MzczOTBjMDYzNGE4MTU4MjQyODVlOTdhM2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yODcs
NiArMjg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAg
ICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgIGNhc2Ug
TXVsdGlQdXRCeU9mZnNldDoKKyAgICAgICAgICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZz
ZXQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IHRoZXNlIHVzZXMuCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTM2Miw2ICsz
NjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAg
ICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0
aVB1dEJ5T2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoK
ICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQgdGhlc2UgdXNlcy4KICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAzYTc3NzExNDVjNzYwYjM0ODJlN2UxYWM5
YjY0OTkwMWRmZjE5ZDVhLi4wZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtMzExLDYg
KzMxMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+ZGZnU2hvdWxkV2F0Y2go
KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgorICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZh
cmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVs
ZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgp
LnZhcmlhbnRzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
dmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSB8fCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+ZGZnU2hv
dWxkV2F0Y2goKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAg
ICAgICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG5vZGUt
PnN0cnVjdHVyZVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9ubHkg
c3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJyYXkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcAppbmRleCA3NGVhNjE4ZTkwMTEyOWE1N2UyYzgzYmI4OTJhNzViN2I4MDYzM2I3
Li4wYzM1YTUzNjVjYzQ2ZWYzYzc4OTk0OGY0ZDJlNjBjY2YwMTc2Yjk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5j
cHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAg
ICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
Y2FzZSBHZXRCeU9mZnNldDogewpAQCAtMzk5LDYgKzQwMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAg
ICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS5ub2RlKCkgPT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBu
b2RlLT5yZW1vdmUobV9ncmFwaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4YzFj
NjEwNTk5ZmQzMDI5OTczNDM2MGNiMjI3YWNiMi4uZTFmNTg5ZjI3MzQzYmZmOTM2MjE2MTg4ZGFl
M2I1Yzg2MzY4NjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcApAQCAtMjMzLDYgKzIzMyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgTXVsdGlHZXRC
eU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0
ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVG9QcmltaXRpdmU6CiAgICAgY2FzZSBUb1Byb3BlcnR5S2V5
OgogICAgIGNhc2UgVGhyb3c6CkBAIC0zOTIsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIENyZWF0ZVRoaXM6
CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGZiMWQw
MjU1NjU3ZDg4YTM1MTFhMjVjNWI0NDlhNDE2ZGRiYzNkMDcuLmQ1NzdmMmQ1MGNkMTUxNWM3ZTAz
YWU0Y2Y0YTFlNzhhNjFkMzE1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKQEAgLTExNzcsNiArMTE3Nyw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVNdWx0aVB1dEJ5T2Zm
c2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zm
c2V0OgorICAgICAgICAgICAgY29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgICAgICAgICAgY29t
cGlsZU1hdGNoU3RydWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NjksNiArMTU3
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBjb21w
aWxlRmlsdGVySUNTdGF0dXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERh
dGVHZXRJbnQzMk9yTmFOOgpAQCAtODEyNCw2ICs4MTI4LDEwNiBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAg
fQorCisgICAgdm9pZCBjb21waWxlTXVsdGlEZWxldGVCeU9mZnNldCgpCisgICAgeworICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIE11bHRp
RGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbV9ub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YSgpOworCisgICAgICAgIHVuc2lnbmVkIG1pc3NDb25maWd1cmFibGUgPSAwOworICAgICAgICB1
bnNpZ25lZCBtaXNzTm9uY29uZmlndXJhYmxlID0gMDsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgRGVsZXRlQnlJ
ZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBpZiAoIXZh
cmlhbnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5yZXN1
bHQoKSkKKyAgICAgICAgICAgICAgICAgICAgKyttaXNzQ29uZmlndXJhYmxlOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKyttaXNzTm9uY29uZmlndXJhYmxlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgdW5pcXVlQ2FzZUNv
dW50ID0gZGF0YS52YXJpYW50cy5zaXplKCk7CisgICAgICAgIGlmIChtaXNzQ29uZmlndXJhYmxl
KQorICAgICAgICAgICAgdW5pcXVlQ2FzZUNvdW50IC09IG1pc3NDb25maWd1cmFibGUgLSAxOwor
ICAgICAgICBpZiAobWlzc05vbmNvbmZpZ3VyYWJsZSkKKyAgICAgICAgICAgIHVuaXF1ZUNhc2VD
b3VudCAtPSBtaXNzTm9uY29uZmlndXJhYmxlIC0gMTsKKyAgICAgICAgaW50IHRydWVCbG9jayA9
IG1pc3NDb25maWd1cmFibGUgPyB1bmlxdWVDYXNlQ291bnQgLSAxIDogLTE7CisgICAgICAgIGlu
dCBmYWxzZUJsb2NrID0gbWlzc05vbmNvbmZpZ3VyYWJsZSA/IHVuaXF1ZUNhc2VDb3VudCAtIDEg
LSAhIW1pc3NDb25maWd1cmFibGUgOiAtMTsKKworICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2ss
IDI+IGJsb2Nrcyh1bmlxdWVDYXNlQ291bnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9ja3Muc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgYmxvY2tzW2ldID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZXhpdCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAg
ICAgVmVjdG9yPFN3aXRjaENhc2UsIDI+IGNhc2VzOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMu
c2l6ZSgpLCBibG9jayA9IDA7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50
IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCkpOworICAgICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIGlmICh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIGNhc2VzLmFw
cGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbYmxvY2sr
K10sIFdlaWdodCgxKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhc2Vz
LmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbdmFy
aWFudC5yZXN1bHQoKSA/IHRydWVCbG9jayA6IGZhbHNlQmxvY2tdLCBXZWlnaHQoMSkpKTsKKyAg
ICAgICAgfQorICAgICAgICBib29sIHN0cnVjdHVyZXNDaGVja2VkID0gbV9pbnRlcnByZXRlci5m
b3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoYmFzZVNldCk7
CisgICAgICAgIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zmc2V0KGJhc2UsIHN0cnVjdHVyZXNDaGVj
a2VkLCBjYXNlcywgZXhpdCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5tX25leHRCbG9jazsKKworICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDI+IHJlc3Vs
dHM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCksIGJs
b2NrID0gMDsgaS0tOykgeworICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9
IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJl
KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGJsb2Nrc1tibG9ja10sIGJsb2NrICsgMSA8IGJsb2Nrcy5zaXplKCkgPyBibG9ja3NbYmxv
Y2sgKyAxXSA6IGV4aXQpOworCisgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSkgeworICAgICAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlOworCisgICAgICAgICAgICAgICAg
aWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAg
ICBzdG9yYWdlID0gYmFzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHN0b3JhZ2UgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVy
Zmx5KTsKKworICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkobV9vdXQuaW50NjRaZXJvLCBz
dG9yYWdlLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQub2Zmc2V0KCkpOworCisgICAg
ICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
ID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBl
RmxhZ3MoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVG
bGFncygpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpOworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAg
ICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3
U3RydWN0dXJlKCkpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IodmFyaWFu
dC5yZXN1bHQoKSA/IG1fb3V0LmJvb2xlYW5UcnVlIDogbV9vdXQuYm9vbGVhbkZhbHNlKSk7Cisg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICArK2Jsb2Nr
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1pc3NOb25jb25maWd1cmFibGUpIHsKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1tmYWxzZUJsb2NrXSk7CisgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKSk7CisgICAgICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bWlzc0NvbmZpZ3VyYWJsZSkgeworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW3Ry
dWVCbG9ja10sIGV4aXQpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9y
KG1fb3V0LmJvb2xlYW5UcnVlKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5hcHBlbmRUbyhleGl0LCBjb250aW51YXRp
b24pOworICAgICAgICBpZiAoIXN0cnVjdHVyZXNDaGVja2VkKQorICAgICAgICAgICAgc3BlY3Vs
YXRlKEJhZENhY2hlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAg
ICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIs
IHJlc3VsdHMpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUo
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggMWEwY2Y1OWZmZmQzYzBh
M2EzZGYyNjUzZWExMzNhODU4ZTQ2MDFjMi4uM2VkMzA0OTUyMmIwMjBmY2E1NmI2MjQ4ZDQ2Zjg5
NGZiZjkxNTFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQ0NCwxMSArNDQ0
LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3Bl
cnR5KAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldyo+KGNlbGwpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0cnVlLCB0eXBlZEFy
cmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKLQotICAgIGlmIChwYXJzZUlu
ZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgewor
ICAgICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0cnVlLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
ICAgICAKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDI1ZGZmNTMzMzc4OTE0MjhlNjJmYTk1MTlkZTE0YTcx
OTQ0ZDRiNzguLjhiOGUxNzk5ODI4OGE2YWI2ZjY4ZWQ5NjdkOWM3ZGU3Yjc1Y2U3NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMTEsMTIgKzIw
MTEsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBz
dHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7
CiAgICAgICAgICAgICBzbG90LnNldEhpdChvZmZzZXQpOwotICAgICAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlz
T2JqZWN0KSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1dHRlcmZs
eSk7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRl
cmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7Ci0gICAgICAgICAg
ICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgIXRoaXNP
YmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAg
dGhpc09iamVjdC0+c2V0U3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZDAyODc5ZmU0Y2Vk
NTNkMDMxZDA5Mzg5YjkwMjQ5YTEwODU0Nzc2Yi4uNjczODQ4ZWNjNGVhZjRkNjA1MGM0ODgzOGE3
ZGYzNGViZGZhNmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKQEAgLTUzMSwxMCArNTMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgfHwgaGlqYWNrc0lu
ZGV4aW5nSGVhZGVyKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIo
Y29uc3QgSlNDZWxsKikgY29uc3Q7Ci0gICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFkZXIoKSBj
b25zdDsKLSAgICBib29sIGNhbkNhY2hlRGVsZXRlSUMoKSBjb25zdDsKLSAgICAKKyAgICBib29s
IGhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCopIGNvbnN0OyAgICAKICAgICBib29sIG1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qp
OwogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCBmYjI3
NmQ4MzliYjFiOGJiMjQyYTM1MDY2MDRiMzJlMjEwMmM4Mjc2Li4xNWRhZDI2ZjljNzgxODljM2Vk
ZmE5YjE4M2FjNzNlYTYxMjg1Mzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNTYsMjIgKzI1Niw2IEBAIGlubGluZSBib29s
IFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKiBjZWxsKSBjb25zdAog
ICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgp
ID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlI
YXZlSW5kZXhpbmdIZWFkZXIoKSBjb25zdAotewotICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGll
cyhpbmRleGluZ1R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFpc1R5
cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0
dXJlOjpjYW5DYWNoZURlbGV0ZUlDKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIWlzVHlwZWRWaWV3
KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSk7Ci19Ci0KIGlubGluZSBib29s
IFN0cnVjdHVyZTo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gdHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKCkgJiYgZ2xvYmFsT2JqZWN0KCkgPT0gbGV4aWNhbEdsb2JhbE9iamVjdDsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDQ0Mzhl
ODYxOTQ5OGY2M2Y4NTY4OWE1YzcxYmI5NDhlMDgzZDA1Ny4uNDMwMDdmM2E2NjJhOWM4ODIxNjFj
NjQ3NDcyODA0NTI0ZmE2M2U0YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAyMC0wMy0xMyAgSnVzdGluIE1p
Y2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGVsZXRl
QnlJZCB0byBiZSBjYWNoZWQgaW4gdGhlIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWFs
bG9jYXRpb24tc2lua2luZy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAo
bm9JbmxpbmUuYXNzZXJ0LmJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LmRv
QWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2MxKToKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydCk6CisgICAgICAgIChibGFja2JveCk6CisgICAgICAgIChub0lubGluZS5ibGFja2Jv
eC5wb2x5dmFyaWFudCk6CisgICAgICAgIChkb0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5k
b0FsbG9jMS5kb0FsbG9jMik6CisgICAgICAgIChub0lubGluZS5kb0FsbG9jMik6CisgICAgICAg
ICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydCk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQuYXNzZXJ0X3Rocm93cyk6CisgICAg
ICAgIChub0lubGluZS5hc3NlcnRfdGhyb3dzLmJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5l
LmJsYWNrYm94LnRlc3RTaW5nbGVTdHJ1Y3R1cmUuZG9BbGxvYzEpOgorICAgICAgICAobm9Jbmxp
bmUuYmxhY2tib3gudGVzdFNpbmdsZVN0cnVjdHVyZSk6CisgICAgICAgIChub0lubGluZS50ZXN0
U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUuZG9EZWxldGUyKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0cnVj
dHVyZS5kb0FsbG9jMik6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlLnRl
c3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUpOgorICAgICAgICAobm9JbmxpbmUudGVzdElubGluZVNp
bmdsZVN0cnVjdHVyZS50ZXN0RXhpdC5kb0RlbGV0ZTMpOgorICAgICAgICAobm9JbmxpbmUudGVz
dElubGluZVNpbmdsZVN0cnVjdHVyZS50ZXN0RXhpdCk6CisgICAgICAgIChub0lubGluZS50ZXN0
RXhpdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy5kb0FsbG9jNCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0RXhpdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcyk6CisgICAgICAgIChub0lubGluZS50
ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdC5zdHJp
bmdfYXBwZWFyZWRfaGVyZS5kb0FsbG9jNSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xl
U3RydWN0dXJlTWlzcy50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCk6CisgICAgICAgIChu
b0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdC50ZXN0U2luZ2xlU3RydWN0dXJl
TWlzc05vbkNvbmZpZ3VyYWJsZS5kb0FsbG9jNik6CisgICAgICAgIChub0lubGluZS50ZXN0U2lu
Z2xlU3RydWN0dXJlTWlzc1N0cmljdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3Vy
YWJsZSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZp
Z3VyYWJsZS50ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkuZG9BbGxvYzcpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUudGVzdFNpbmdsZVN0
cnVjdHVyZUVtcHR5KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0
eS50ZXN0UG9seW1vcnBoaWMuZG9EZWxldGU4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5n
bGVTdHJ1Y3R1cmVFbXB0eS50ZXN0UG9seW1vcnBoaWMpOgorICAgICAgICAobm9JbmxpbmUudGVz
dFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudC5kb0RlbGV0ZTkpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudC5wb2x5dmFyaWFudCk6CisgICAgICAg
IChub0lubGluZS50ZXN0UG9seW1vcnBoaWMudGVzdFBvbHl2YXJpYW50KToKKyAgICAgICAgKG5v
SW5saW5lLnRlc3RQb2x5dmFyaWFudC50ZXN0Q29uc3RhbnRGb2xkaW5nLmRvRGVsZXRlMTApOgor
ICAgICAgICAobm9JbmxpbmUudGVzdFBvbHl2YXJpYW50LnRlc3RDb25zdGFudEZvbGRpbmcpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdENvbnN0YW50Rm9sZGluZy50ZXN0T2JqZWN0U2lua2luZy5k
b0FsbG9jMTEpOgorICAgICAgICAobm9JbmxpbmUudGVzdENvbnN0YW50Rm9sZGluZy50ZXN0T2Jq
ZWN0U2lua2luZyk6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqZWN0U2lua2luZy50ZXN0UHJv
eHkuZG9BbGxvYzEyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmplY3RTaW5raW5nLnRlc3RQ
cm94eS5ub0lubGluZS5kb0RlbGV0ZTEyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmplY3RT
aW5raW5nLnRlc3RQcm94eSk6CisgICAgICAgIChub0lubGluZS50ZXN0UHJveHkudGVzdFR5cGVk
QXJyYXkuZG9EZWxldGUxMik6CisgICAgICAgIChub0lubGluZS50ZXN0UHJveHkudGVzdFR5cGVk
QXJyYXkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFR5cGVkQXJyYXkudGVzdE1pc3NNaXhlZC5k
b0RlbGV0ZTEzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RUeXBlZEFycmF5LnRlc3RNaXNzTWl4
ZWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NNaXhlZC50ZXN0TWlzc05vbk1peGVkLmRv
RGVsZXRlMTQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NNaXhlZC50ZXN0TWlzc05vbk1p
eGVkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTm9uTWl4ZWQudGVzdEJ5VmFsLmRvRGVs
ZXRlMTUpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NOb25NaXhlZC50ZXN0QnlWYWwpOgor
CiAyMDIwLTAzLTEzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IHNraXAgd2FzbS9mdW5jdGlvbi10ZXN0cy9ncm93LW1lbW9yeS1jYXVzZS1nYy5qcyBvbiBtZW1v
cnkgbGltaXRlZCBkZXZpY2VzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9k
ZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5nLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNo
bWFya3MvZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NjYzNDY0ZjMxNzdjYjU5ZmE2Y2Y5MjRlMTQyMjc0NjU5NDA0MTM1Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lu
a2luZy5qcwpAQCAtMCwwICsxLDI2IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdh
dGNoIFNlcmllcyAzIgorCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFj
b25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9
Citub0lubGluZShhc3NlcnQpCisKK2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4g
eAorfQorbm9JbmxpbmUoYmxhY2tib3gpCisKK2Z1bmN0aW9uIGRvQWxsb2MxKCkgeworICAgIGxl
dCBvYmogPSB7fQorICAgIG9iai54ID0gNQorICAgIG9iai55ID0gNworICAgIG9iai55ID0gYmxh
Y2tib3gob2JqLnkpCisgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICByZXR1cm4gb2JqLnkK
K30KK25vSW5saW5lKGRvQWxsb2MxKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDAwOyAr
K2kpIHsKKyAgICBkb0FsbG9jMSgpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJvcGVydHkuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3Y2JjYmQ2
OTliM2IwMzI2N2NiMDFmMTI3YTBmNTIyYzFlYjVkMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpAQCAtMCww
ICsxLDQxIEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIgor
CitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9CisKK2Z1bmN0aW9uIGJs
YWNrYm94KHgpIHsKKyAgICByZXR1cm4geAorfQorbm9JbmxpbmUoYmxhY2tib3gpCisKK2Z1bmN0
aW9uIHBvbHl2YXJpYW50KHgpIHsKKyAgICBhc3NlcnQoZGVsZXRlIHgueCkKK30KKworZnVuY3Rp
b24gZG9BbGxvYzEoKSB7CisgICAgbGV0IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2Jq
LnkgPSA3CisgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICBwb2x5dmFyaWFudChvYmop
CisgICAgcmV0dXJuIG9iai55Cit9Citub0lubGluZShkb0FsbG9jMSkKKworZnVuY3Rpb24gZG9B
bGxvYzIoKSB7CisgICAgbGV0IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLmIgPSA5
CisgICAgb2JqLnkgPSA3CisgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICBwb2x5dmFy
aWFudChvYmopCisgICAgcmV0dXJuIG9iai55Cit9Citub0lubGluZShkb0FsbG9jMikKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsgKytpKSB7CisgICAgZG9BbGxvYzEoKQorICAgIGRv
QWxsb2MyKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1k
ZmctaW5saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTNiZWU3YmNjMTJjOWQyZGQ3YTQyODE2OTUxNTBmM2ZmZGIzNmExMgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5s
aW5lLmpzCkBAIC0wLDAgKzEsNDA5IEBACitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7Cisg
ICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZh
aWxlZCIpCit9Citub0lubGluZShhc3NlcnQpCisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZikg
eworICAgIHRyeSB7CisgICAgICAgIGYoKQorICAgIH0gY2F0Y2ggeworICAgICAgICByZXR1cm4K
KyAgICB9CisgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30KK25vSW5s
aW5lKGFzc2VydF90aHJvd3MpCisKK2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4g
eAorfQorbm9JbmxpbmUoYmxhY2tib3gpCisKK2Z1bmN0aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1cmUo
KSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzEoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAg
ICAgICBvYmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3CisgICAgICAgIG9iai55ID0gYmxhY2ti
b3gob2JqLnkpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgICAgIHJldHVybiBv
YmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMSkKKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2MxKCkKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlKQorCitmdW5jdGlvbiB0ZXN0SW5saW5lU2luZ2xlU3Ry
dWN0dXJlKCkgeworICAgIGZ1bmN0aW9uIGRvRGVsZXRlMihvKSB7CisgICAgICAgIGFzc2VydChk
ZWxldGUgby54KQorICAgIH0KKworICAgIGZ1bmN0aW9uIGRvQWxsb2MyKCkgeworICAgICAgICBs
ZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSA1CisgICAgICAgIG9iai55ID0gNworICAgICAg
ICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBkb0RlbGV0ZTIob2JqKQorICAgICAg
ICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzIpCisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgZjogNCB9
KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBlOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGks
IGQ6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0
ZTIoeyBpLCBiOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGksIGE6IDQgfSkKKyAgICAgICAg
ZG9BbGxvYzIoKQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytp
KSB7CisgICAgICAgIGRvQWxsb2MyKCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0SW5saW5lU2lu
Z2xlU3RydWN0dXJlKQorCitmdW5jdGlvbiB0ZXN0RXhpdCgpIHsKKyAgICBmdW5jdGlvbiBkb0Rl
bGV0ZTMob2JqKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLnkpCisgICAgfQorICAgIG5v
SW5saW5lKGRvRGVsZXRlMykKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kp
IHsKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBmOiA0IH0pCisg
ICAgICAgIGRvRGVsZXRlMyh7IGksIGU6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZDog
NCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7
IGksIGI6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgYTogNCB9KQorICAgIH0KKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7
IGksIGE6IDQgfSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0RXhpdCkKKworZnVuY3Rpb24gdGVz
dFNpbmdsZVN0cnVjdHVyZU1pc3MoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzQoKSB7CisgICAg
ICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3Cisg
ICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFzc2VydChkZWxldGUgb2Jq
LnopCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jNCkK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxs
b2M0KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlTWlzcykKKworZnVu
Y3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3Qi
CisKKyAgICBmdW5jdGlvbiBkb0FsbG9jNSgpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAg
ICAgIG9iai55ID0gNQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAieCIsIHsK
KyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDEK
KyAgICAgICAgfSkKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNz
ZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgb2JqLngpCisgICAgICAgIHJldHVybiBvYmoueQorICAg
IH0KKyAgICBub0lubGluZShkb0FsbG9jNSkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2M1KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0
U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVy
ZU1pc3NOb25Db25maWd1cmFibGUoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzYoKSB7CisgICAg
ICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueSA9IDUKKyAgICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KG9iaiwgIngiLCB7CisgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAor
ICAgICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0pCisgICAgICAgIG9iai55ID0gYmxhY2ti
b3gob2JqLnkpCisgICAgICAgIGFzc2VydCghKGRlbGV0ZSBvYmoueCkpCisgICAgICAgIHJldHVy
biBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jNikKKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2M2KCkKKyAgICB9Cit9Citu
b0lubGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZSkKKworZnVuY3Rp
b24gdGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5KCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M3KCkg
eworICAgICAgICBsZXQgb2JqID0geyBhOiAxLCBiOiAyfQorICAgICAgICBvYmpbMV0gPSA1Cisg
ICAgICAgIGRlbGV0ZSBvYmpbMV0KKyAgICAgICAgYmxhY2tib3goKCkgPT4gb2JqLnggPSA1KSgp
CisgICAgICAgIGFzc2VydChPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PSAzKQorICAgICAgICBh
c3NlcnQoZGVsZXRlIG9iai5hKQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai5iKQorICAgICAg
ICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAgICAgICBhc3NlcnQoT2JqZWN0LmtleXMob2JqKS5s
ZW5ndGggPT0gMCkKKyAgICAgICAgb2JqLnggPSA3CisgICAgICAgIHJldHVybiBvYmoKKyAgICB9
CisgICAgbm9JbmxpbmUoZG9BbGxvYzcpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkgeworICAgICAgICBkb0FsbG9jNygpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNp
bmdsZVN0cnVjdHVyZUVtcHR5KQorCitmdW5jdGlvbiB0ZXN0UG9seW1vcnBoaWMoKSB7CisgICAg
ZnVuY3Rpb24gZG9EZWxldGU4KG9iaikgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQor
ICAgICAgICByZXR1cm4gb2JqCisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlOCkKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGksIGE6
IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7Cisg
ICAgICAgIGRvRGVsZXRlOCh7IGksIGY6IDQgfSkKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlOCh7
IGksIGU6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGU4KHsg
aSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0ZTgoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVs
ZXRlOCh7IGksIGI6IDQgfSkKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlOCh7IGksIGE6IDQsIHk6
IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTgoeyBpLCBhOiA0IH0pCisgICAgfQor
fQorbm9JbmxpbmUodGVzdFBvbHltb3JwaGljKQorCitmdW5jdGlvbiB0ZXN0UG9seXZhcmlhbnQo
KSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGU5KG9iaikgeworICAgICAgICBhc3NlcnQoZGVsZXRl
IG9iai55KQorICAgICAgICByZXR1cm4gb2JqCisgICAgfQorCisgICAgZnVuY3Rpb24gcG9seXZh
cmlhbnQob2JqKSB7CisgICAgICAgIHJldHVybiBkb0RlbGV0ZTkob2JqKQorICAgIH0KKyAgICBu
b0lubGluZShwb2x5dmFyaWFudCkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgKytpKSB7
CisgICAgICAgIHBvbHl2YXJpYW50KHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGU5KHsgaSwgZjogNCB9
KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU5KHsgaSwgZTogNCwgeTogMTAgfSkueSA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICBkb0RlbGV0ZTkoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRl
OSh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGU5KHsgaSwgYjogNCB9KQorICAgICAgICBh
c3NlcnQoZG9EZWxldGU5KHsgaSwgYTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAg
IH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIHBv
bHl2YXJpYW50KHsgaSwgYTogNCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RQb2x5dmFyaWFu
dCkKKworZnVuY3Rpb24gdGVzdENvbnN0YW50Rm9sZGluZygpIHsKKyAgICBmdW5jdGlvbiBkb0Rl
bGV0ZTEwKG9iaikgeworICAgICAgICBpZiAoJHZtLmRmZ1RydWUoKSkgeworICAgICAgICAgICAg
b2JqID0geyBpOiAwLCBhOiA1LCB5OiAyMCB9CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KGRl
bGV0ZSBvYmoueSkKKyAgICAgICAgYXNzZXJ0KChkZWxldGUgb2JqLnopICsgNSA9PSA2KQorICAg
ICAgICByZXR1cm4gb2JqCisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTApCisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxl
dGUxMCh7IGksIGE6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxl
dGUxMCh7IGksIGY6IDQgfSkKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlMTAoeyBpLCBlOiA0LCB5
OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBkOiA0IH0p
CisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMTAoeyBp
LCBiOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdENvbnN0YW50Rm9sZGluZykKKworZnVu
Y3Rpb24gdGVzdE9iamVjdFNpbmtpbmcoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzExKGkpIHsK
KyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gMQorICAgICAgICBvYmoueSA9
IDIKKyAgICAgICAgaWYgKGkgPT0gMCkKKyAgICAgICAgICAgIG9iai5hID0gMworICAgICAgICBl
bHNlIGlmIChpID09IDEpCisgICAgICAgICAgICBvYmouYiA9IDMKKyAgICAgICAgZWxzZSBpZiAo
aSA9PSAzKQorICAgICAgICAgICAgb2JqLmMgPSAzCisgICAgICAgIGRlbGV0ZSBvYmoueAorICAg
ICAgICBhc3NlcnQoKGRlbGV0ZSBvYmoueCkgKyA1ID09IDYpCisgICAgICAgIHJldHVybiBvYmou
eQorCisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxMSkKKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChkb0FsbG9jMTEoaSAlIDMpID09
IDIpCisgICAgfQorICAgIGFzc2VydChkb0FsbG9jMTEoNCkgPT0gMikKK30KK25vSW5saW5lKHRl
c3RPYmplY3RTaW5raW5nKQorCitmdW5jdGlvbiB0ZXN0UHJveHkoKSB7CisgICAgZnVuY3Rpb24g
ZG9BbGxvYzEyKCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSAxCisg
ICAgICAgIG9iai5jb3VudCA9IDAKKworICAgICAgICBjb25zdCBoYW5kbGVyID0geworICAgICAg
ICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkgeworICAgICAgICAgICAgYXNzZXJ0KHBy
b3AgPT0gInoiKQorICAgICAgICAgICAgZGVsZXRlIHRhcmdldC56CisgICAgICAgICAgICArK29i
ai5jb3VudAorICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJv
eHkob2JqLCBoYW5kbGVyKQorCisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxMikKKworICAg
IGZ1bmN0aW9uIGRvRGVsZXRlMTIob2JqKSB7CisgICAgICAgIGRlbGV0ZSBvYmouegorICAgIH0K
KyAgICBub0lubGluZShkb0RlbGV0ZTEyKQorCisgICAgbGV0IGZvbyA9IGRvQWxsb2MxMigpCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUx
Mihmb28pCisgICAgfQorICAgIGFzc2VydChmb28uY291bnQgPSAxMDAwMDAwKQorfQorbm9Jbmxp
bmUodGVzdFByb3h5KQorCitmdW5jdGlvbiB0ZXN0VHlwZWRBcnJheSgpIHsKKyAgICBmdW5jdGlv
biBkb0RlbGV0ZTEyKG9iaikgeworICAgICAgICBvYmouY29uc3RydWN0b3IgPSBudWxsCisgICAg
ICAgIGFzc2VydChkZWxldGUgb2JqLmNvbnN0cnVjdG9yKQorICAgIH0KKyAgICBub0lubGluZShk
b0RlbGV0ZTEyKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAg
ICAgICAgZG9EZWxldGUxMihuZXcgVWludDhBcnJheSgpKQorICAgIH0KKworICAgIGxldCBmb28g
PSBuZXcgVWludDhBcnJheSgxMik7CisgICAgdHJhbnNmZXJBcnJheUJ1ZmZlcihmb28uYnVmZmVy
KQorICAgIGRvRGVsZXRlMTIoZm9vKQorICAgIGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZv
b1swXSkKK30KK25vSW5saW5lKHRlc3RUeXBlZEFycmF5KQorCitmdW5jdGlvbiB0ZXN0TWlzc01p
eGVkKCkgeworICAgIGZ1bmN0aW9uIGRvRGVsZXRlMTMob2JqKSB7CisgICAgICAgIHJldHVybiBk
ZWxldGUgb2JqLngKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxMykKKworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTEz
KHsgeTogNCB9KSkKKyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShmb28sICJ4IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAg
ICAgICAgICAgIHZhbHVlOiA0MQorICAgICAgICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRl
MTMoZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0TWlzc01peGVkKQorCitmdW5jdGlvbiB0
ZXN0TWlzc05vbk1peGVkKCkgeworICAgIGZ1bmN0aW9uIGRvRGVsZXRlMTQob2JqKSB7CisgICAg
ICAgIHJldHVybiBkZWxldGUgb2JqLngKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxNCkK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGxldCBm
b28gPSB7fQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAieCIsIHsKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAg
ICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0ZTE0KGZvbykpCisKKyAgICAgICAgZm9vID0g
eyB5OiA0IH0KKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAg
ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQwCisgICAg
ICAgIH0pCisgICAgICAgIGFzc2VydCghZG9EZWxldGUxNChmb28pKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RNaXNzTm9uTWl4ZWQpCisKK2Z1bmN0aW9uIHRlc3RCeVZhbCgpIHsKKyAgICBmdW5j
dGlvbiBkb0RlbGV0ZTE1KG9iaikgeworICAgICAgICByZXR1cm4gZGVsZXRlIG9ialsieCJdCisg
ICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTUpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlMTUoeyB5OiA0IH0pKQorICAg
ICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngi
LCB7CisgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6
IDQxCisgICAgICAgIH0pCisgICAgICAgIGFzc2VydCghZG9EZWxldGUxNShmb28pKQorCisgICAg
ICAgIGZvbyA9IHsgeDogNCB9CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTE1KGZvbykpCisgICAg
ICAgIGFzc2VydChmb28ueCA9PSB1bmRlZmluZWQpCisgICAgICAgIGdjKCkKKyAgICB9Cit9Citu
b0lubGluZSh0ZXN0QnlWYWwpCisKK3Rlc3RCeVZhbCgpCit0ZXN0TWlzc01peGVkKCkKK3Rlc3RN
aXNzTm9uTWl4ZWQoKQordGVzdFR5cGVkQXJyYXkoKQordGVzdFByb3h5KCkKK3Rlc3RTaW5nbGVT
dHJ1Y3R1cmUoKQordGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSgpCit0ZXN0RXhpdCgpCit0ZXN0
U2luZ2xlU3RydWN0dXJlTWlzcygpCit0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpCit0
ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZSgpCit0ZXN0U2luZ2xlU3RydWN0
dXJlRW1wdHkoKQordGVzdFBvbHltb3JwaGljKCkKK3Rlc3RQb2x5dmFyaWFudCgpCit0ZXN0Q29u
c3RhbnRGb2xkaW5nKCkKK3Rlc3RPYmplY3RTaW5raW5nKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393552</attachid>
            <date>2020-03-13 16:21:03 -0700</date>
            <delta_ts>2020-03-16 23:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200313162102.patch</filename>
            <type>text/plain</type>
            <size>100408</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2E4YTM0Njc3OTczNGIzZmVmNGI2NTU0Y2UzM2I2Y2VmZDY4ZGViLi5hNjdjMmE2ZGE3MjMyYTY2
ZDlmYjZlMTY5MjJiYmE2YmE3YWM2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdo
ZW4gd2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBz
dHJ1Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAg
ICAgY3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1
cm5pbmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMs
CisgICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUg
KG9yIGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9n
aWMgZm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2Ft
ZSBhcyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0
eSB0byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdo
aWxlIGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisK
KyAgICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0
aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRl
bGV0ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBt
aXNzLCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKwor
ICAgICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUg
aWRlbnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVt
b3ZlcyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYg
d2UgbmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFs
c28gZml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1
cyBvZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAg
ICAgICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2Yg
dGhpcyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKwor
ICAgICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlh
bnQtZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3Bl
cnR5LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAg
ICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vz
c0Nhc2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRW
YXJpYW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0
ZW1wdFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3Ry
dWN0dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFn
Z3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6
CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RGVsZXRl
QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0Rl
bGV0ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFu
dDo6b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6
Om5ld1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojpy
ZXN1bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2Zmc2V0IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJvcGVydHlVbnNldCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAg
KiBieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxl
dGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVz
Ojpjb21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6RGVs
ZXRlQnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzbG93VmVy
c2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptZXJnZSk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5
U3RhdHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpt
YXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZSk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1
c01hcC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAg
ICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWNv
cmRlZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNl
czo6bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoK
KyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFjaFZlY3Rvcik6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5h
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0
ZUJ5T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFw
aC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9E
RkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TXVsdGlEZWxldGVCeU9mZnNldERhdGE6
OndyaXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Om11bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAg
ICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVy
ZUNoZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRl
bnRpZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAg
ICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGls
ZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlI
YXZlSW5kZXhpbmdIZWFkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OmNhbkNhY2hlRGVsZXRlSUMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTAzLTEyICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRGVsZXRlIElD
IGNyZWF0aW9uIHNob3VsZCBjaGVjayBtYXlOZWVkVG9DaGVja0NlbGwvY2FuQ2FjaGVEZWxldGVJ
QyByZWdhcmRsZXNzIG9mIFN0cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZmYyMjVlMDcxZDllYjRjYzQ0ZWRlOGVhNmU4NWY0
MWI1YmUyN2U4Li43MTMzMDAwMjdlYjUxNWU4ZWEzM2RlOWUyN2Q2MTg5MDgzZmZkMzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MDEsNiArNTAxLDggQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9Db2Rl
VHlwZS5oCiAgICAgYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAogICAgIGJ5dGVjb2RlL0RhdGFG
b3JtYXQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKKyAgICBieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5oCiAgICAgYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5oCiAgICAg
Ynl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVC
bG9ja0VkZ2UuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YWZjZTAxNWY5MGJi
MjUxMDRjOGI2MWUxYjcyOTVjNjdjYzAxY2IxLi41MDY4ODEwYmRiNWRhNTFlMGZhMTE1MmFlMmYw
OWFlMDY0NTcxZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE3OCw3ICsx
MTc4LDkgQEAKIAkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVD
QTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEy
MDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQUY3Q0UxRDBEMzFCMzAwNUU2MEJF
IC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi87IH07CisJCTczMTFGQTMyMjQwREIxRDMwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRW
YXJpYW50LmggKi87IH07CiAJCTczNEI2NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDczNEI2NTU0MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3M0FEMDYyOTIzRkY2
NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVC
eVN0YXR1cy5oICovOyB9OwogCQk3M0UzNzk5NDIyRTBFRjY1MDA5MzM1NjUgLyogQjNSZWR1Y2VM
b29wU3RyZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDczRTM3OTkzMjJFMEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICov
OyB9OwogCQk3NTkzQzg5OEJFNzE0QTY0QkU5M0E2RTcgLyogV2FzbUNvbnRleHRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjc5NThEN0ZB
MTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzkwMDgxMzkxRTk1QThFQzAwNTJEN0NE
IC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc5MDA4MTM3MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5NzIsNyArMzk3NCwx
MSBAQAogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThC
MDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJF
IC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRW
YXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERl
bGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8q
IERlbGV0ZVByb3BlcnR5U2xvdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
ZWxldGVQcm9wZXJ0eVNsb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzNBRDA2
MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERl
bGV0ZUJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3OTkzMjJF
MEVGNEYwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBwYXRoID0gYjMvQjNSZWR1
Y2VMb29wU3RyZW5ndGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTUy
MkUwRUY5MTAwOTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgcGF0aCA9
IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04MjQxLDYgKzgyNDcsMTAgQEAKIAkJCQkwRkM3MTJERDE3Q0Q4Nzc4
MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJRkU1MDY4
NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8sCiAJCQkJRkU1
MDY4NjQxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5oICovLAorCQkJCTcz
MTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8sCisJCQkJ
NzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8sCisJCQkJ
NzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8qIERlbGV0ZUJ5U3RhdHVzLmNwcCAqLywKKwkJCQk3
M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLywKIAkJCQkwRkJD
MEFFNDE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwICovLAogCQkJCTBGQkMw
QUU1MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oICovLAogCQkJCTBGMkVCQkFB
MURFREY5NEUwMDk5MDM2OSAvKiBEaXJlY3RFdmFsQ29kZUNhY2hlLmNwcCAqLywKQEAgLTkyMTQs
NiArOTIyNCw4IEBACiAJCQkJRkU1MDY4NjUxQUUyNDYzOTAwMDlEQUI3IC8qIERlZmVycmVkU291
cmNlRHVtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDczREE0QTQ3NjRDNDVGRTg3MUIwNDg1IC8q
IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCQjczQkIx
REVGODY0NTAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTczMTFGQTMyMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRl
UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5
RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzdBNDIzRTE3QTBC
QkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBlMDA5NjY2ODJiNTIyMTQ0YmM0ODkxMDU5ZjM5ZTFiYzI4
NjZjZjljLi43ZmM1YTcxYTdhNjhlM2IwMDYxOTY1MjZhYWYxM2MyMzM2Mzc2N2FmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTksNiArMjE5LDggQEAgYnl0ZWNvZGUvREZHRXhp
dFByb2ZpbGUuY3BwCiBieXRlY29kZS9EYXRhRm9ybWF0LmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcAogYnl0ZWNvZGUvRGVmZXJyZWRTb3VyY2VEdW1wLmNwcAor
Ynl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCitieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5j
cHAKIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29kZS9FdmFsQ29kZUJs
b2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBiZmMxNTllYzc4
N2QxOTU4MGUxOTA4ZjA0NWVjYzM4NDI4ZjEwYzRjLi5lYjg5YjliODBhNDZhZTRmYjU2Nzk5Njlj
ZDkzODQ4NWUxMTI3ODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwCkBAIC0xMjksMTAgKzEyOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3ND
YXNlPiBBY2Nlc3NDYXNlOjpjcmVhdGVEZWxldGUoCiAgICAgVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG9sZFN0cnVjdHVyZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
dm0pKTsKLSAgICAvLyBXZSBkbyBub3QgY2FjaGUgdGhpcyBjYXNlIHNvIHRoYXQgd2UgZG8gbm90
IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbCwgZS5nLiBUeXBlZEFycmF5IGNlbGxzIHJlcXVpcmUg
YSBjaGVjayBmb3IgbmV1dGVyaW5nIHN0YXR1cy4KLSAgICAvLyBTZWUgdGhlIERlbGV0ZSBjb2Rl
IGJlbG93LgotICAgIGlmICghbmV3U3RydWN0dXJlLT5jYW5DYWNoZURlbGV0ZUlDKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVCghbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpIHx8IG9sZFN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPihuZXcgQWNjZXNzQ2FzZSh2bSwgb3duZXIs
IERlbGV0ZSwgaWRlbnRpZmllciwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUsIHsgfSwgeyB9KSk7CiB9
CiAKQEAgLTE5NDUsMTggKzE5NDIsOSBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChB
Y2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICBTY3JhdGNoUmVnaXN0ZXJBbGxv
Y2F0b3I6OlByZXNlcnZlZFN0YXRlIHByZXNlcnZlZFN0YXRlID0KICAgICAgICAgICAgIGFsbG9j
YXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3Rl
ckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCi0gICAgICAgIGJv
b2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBuZXdTdHJ1Y3R1cmUoKS0+bWF5SGF2ZUluZGV4aW5nSGVh
ZGVyKCk7Ci0gICAgICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2UgeWV0IHNvIHRoYXQg
d2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgdGhlIGpzY2VsbC4KLSAgICAgICAgLy8gU2VlIFN0cnVj
dHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIgYW5kIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eS4KLSAg
ICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSgpLT5jYW5DYWNoZURlbGV0ZUlDKCkpOwotICAgICAg
ICAvLyBDbGVhciB0aGUgYnV0dGVyZmx5IGlmIHdlIGhhdmUgbm8gcHJvcGVydGllcywgc2luY2Ug
b3VyIHB1dCBjb2RlIGV4cGVjdHMgdGhpcy4KLSAgICAgICAgYm9vbCBzaG91bGROdWtlU3RydWN0
dXJlQW5kQ2xlYXJCdXR0ZXJmbHkgPSAhbmV3U3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCkgJiYgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4aW5nSGVh
ZGVyOwotCiAgICAgICAgIGppdC5tb3ZlVmFsdWUoSlNWYWx1ZSgpLCB2YWx1ZVJlZ3MpOwogCi0g
ICAgICAgIGlmIChzaG91bGROdWtlU3RydWN0dXJlQW5kQ2xlYXJCdXR0ZXJmbHkpIHsKLSAgICAg
ICAgICAgIGppdC5udWtlU3RydWN0dXJlQW5kU3RvcmVCdXR0ZXJmbHkodm0sIHZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIGJhc2VHUFIpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5saW5lT2Zmc2V0
KG1fb2Zmc2V0KSkgeworICAgICAgICBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CiAg
ICAgICAgICAgICBqaXQuc3RvcmVWYWx1ZSgKICAgICAgICAgICAgICAgICB2YWx1ZVJlZ3MsCiAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA3NDM2OTUzNGU5MGVjNzdhMzE1ZDVl
OWMyMDA4ZjJmYzllYzEyNGZlLi5mY2Y2ZmFhOWM3ZmFiZTUxMjQ0OWJhODY0ZDI1NWY5MGRlODlk
Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMTUwMCw2ICsxNTAwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUucHV0
U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmluU3RhdHVzID0g
cGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21t
b24tPnJlY29yZGVkU3RhdHVzZXMuZGVsZXRlcykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5kZWxldGVTdGF0dXMgPSBw
YWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGFkNDJiZTk5Y2QwMDAyYWI1NWE0NWZjMjg2OTIwMDJlODdjNjZiNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5jcHAKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZh
cmlhbnQuaCIKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KENhY2hlYWJs
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCByZXN1bHQsCisgICAgU3RydWN0dXJlKiBvbGRT
dHJ1Y3R1cmUsIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQp
CisgICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgLCBtX29sZFN0cnVjdHVyZShvbGRTdHJ1Y3R1
cmUpCisgICAgLCBtX25ld1N0cnVjdHVyZShuZXdTdHJ1Y3R1cmUpCisgICAgLCBtX29mZnNldChv
ZmZzZXQpCisgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKK3sKKyAgICBB
U1NFUlQob2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9vZmZzZXQgPT0gaW52YWxpZE9mZnNldCkK
KyAgICAgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJU
KG5ld1N0cnVjdHVyZSk7Cit9CisKK0RlbGV0ZUJ5SWRWYXJpYW50Ojp+RGVsZXRlQnlJZFZhcmlh
bnQoKSB7IH0KKworRGVsZXRlQnlJZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KGNvbnN0IERl
bGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitEZWxl
dGVCeUlkVmFyaWFudCYgRGVsZXRlQnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBEZWxldGVC
eUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgbV9pZGVudGlmaWVyID0gb3RoZXIubV9pZGVudGlm
aWVyOworICAgIG1fcmVzdWx0ID0gb3RoZXIubV9yZXN1bHQ7CisgICAgbV9vbGRTdHJ1Y3R1cmUg
PSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAgICBtX25ld1N0cnVjdHVyZSA9IG90aGVyLm1fbmV3
U3RydWN0dXJlOworICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBE
ZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCit7CisgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEh
b3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9y
ZXN1bHQgIT0gb3RoZXIubV9yZXN1bHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtX2lkZW50aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZz
ZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29sZFN0cnVjdHVyZSAhPSBv
dGhlci5tX29sZFN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCht
X25ld1N0cnVjdHVyZSA9PSBvdGhlci5tX25ld1N0cnVjdHVyZSk7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3RydWN0dXJlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICEhbmV3U3RydWN0dXJlKCk7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZh
cmlhbnQ6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1faWRl
bnRpZmllci52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFy
aWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgaWYgKG1fb2xk
U3RydWN0dXJlKQorICAgICAgICBtX29sZFN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7
CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lm
Q2hlYXAodmlzaXRvcik7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7Cit9CisKK2Jv
b2wgRGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKK3sKKyAgICBpZiAoIXZtLmhl
YXAuaXNNYXJrZWQobV9vbGRTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1fbmV3U3RydWN0dXJlICYmICF2bS5oZWFwLmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERlbGV0
ZUJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0
KikgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIjwiKTsKKyAgICBvdXQucHJpbnQoImlkPSciLCBt
X2lkZW50aWZpZXIsICInLCByZXN1bHQ9IiwgbV9yZXN1bHQpOworICAgIGlmIChtX29sZFN0cnVj
dHVyZSkKKyAgICAgICAgb3V0LnByaW50KCIsICIsICptX29sZFN0cnVjdHVyZSk7CisgICAgaWYg
KG1fbmV3U3RydWN0dXJlKQorICAgICAgICBvdXQucHJpbnQoIiAtPiAiLCAqbV9uZXdTdHJ1Y3R1
cmUpOworICAgIG91dC5wcmludCgiLCBvZmZzZXQgPSAiLCBvZmZzZXQoKSk7CisgICAgb3V0LnBy
aW50KCI+Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4Nzc2
YjY5NzlmNmQ5YzIzNjVjY2UzNTQxZmU3YWZkMWMxMjIwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuaApAQCAtMCww
ICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dC5oIgorI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0
LmgiCisjaW5jbHVkZSA8d3RmL0JveC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2Fs
bExpbmtTdGF0dXM7CitjbGFzcyBEZWxldGVCeVN0YXR1czsKK3N0cnVjdCBEdW1wQ29udGV4dDsK
KworY2xhc3MgRGVsZXRlQnlJZFZhcmlhbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIERlbGV0ZUJ5SWRWYXJpYW50KAorICAgICAgICBDYWNoZWFibGVJZGVu
dGlmaWVyLCBib29sIHJlc3VsdCwKKyAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3V0cmUsIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7CisKKyAgICB+RGVsZXRlQnlJ
ZFZhcmlhbnQoKTsKKworICAgIERlbGV0ZUJ5SWRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJp
YW50Jik7CisgICAgRGVsZXRlQnlJZFZhcmlhbnQmIG9wZXJhdG9yPShjb25zdCBEZWxldGVCeUlk
VmFyaWFudCYpOworCisgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX29sZFN0cnVjdHVyZTsgfQorICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXdTdHJ1Y3R1cmU7IH0KKyAgICBib29sIHJlc3VsdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzdWx0OyB9CisgICAgYm9vbCB3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3Q7CisKKyAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQorCisg
ICAgYm9vbCBpc1Byb3BlcnR5VW5zZXQoKSBjb25zdCB7IHJldHVybiBvZmZzZXQoKSA9PSBpbnZh
bGlkT2Zmc2V0OyB9CisKKyAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRW
YXJpYW50JiBvdGhlcik7CisKKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJik7
CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUo
Vk0mKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CisKKyAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQor
ICAgIHsKKyAgICAgICAgaWYgKCEhbV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChtX2lkZW50aWZpZXIpIHsK
KyAgICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9pZGVudGlmaWVyKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9v
bGRTdHJ1Y3R1cmUgPT0gb3RoZXIubV9vbGRTdHJ1Y3R1cmU7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBEZWxldGVCeVN0YXR1czsKKworICAgIGJvb2wgbV9yZXN1bHQ7Cisg
ICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0
dXJlOworICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OworICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MGZhMGZjZmMzYzQ0YWZkZTNlYjI2Y2Q0NDk1MTVmMDkyYjJiZjJiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcApAQCAt
MCwwICsxLDMwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgorCisj
aW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0
aWxzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTU2NvcGUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTW9kdWxlTmFtZXNwYWNl
QWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKworbmFtZXNw
YWNlIEpTQyB7CituYW1lc3BhY2UgRE9NSklUIHsKK2NsYXNzIEdldHRlclNldHRlcjsKK30KKwor
Ym9vbCBEZWxldGVCeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBEZWxldGVCeUlkVmFyaWFu
dCYgdmFyaWFudCkKK3sKKyAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50KG1fdmFyaWFu
dHMsIHZhcmlhbnQpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0
ZUZvckJhc2VsaW5lKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBFeGl0RmxhZyBkaWRFeGl0KQoreworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKKworICAgIERl
bGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKworI2lmIEVOQUJMRShERkdfSklUKQorICAgIHJlc3VsdCA9
IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBsb2Nr
ZXIsIGJhc2VsaW5lQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1
YkluZm8pOworCisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1Zl
cnNpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFN
KGRpZEV4aXQpOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNlbmRpZgorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIEVOQUJMRShKSVQpCitEZWxldGVCeVN0YXR1czo6
RGVsZXRlQnlTdGF0dXMoU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnksIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbykKK3sKKyAgICBzd2l0Y2ggKHN1bW1hcnkpIHsKKyAgICBjYXNlIFN0dWJJbmZv
U3VtbWFyeTo6Tm9JbmZvcm1hdGlvbjoKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6U2ltcGxlOgorICAg
IGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpNYWtlc0NhbGxzOgorICAgIGNhc2UgU3R1YkluZm9TdW1t
YXJ5OjpUYWtlc1Nsb3dQYXRoQW5kTWFrZXNDYWxsczoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5
OjpUYWtlc1Nsb3dQYXRoOgorICAgICAgICBtX3N0YXRlID0gc3R1YkluZm8udG9va1Nsb3dQYXRo
ID8gT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIDogTGlrZWx5VGFrZXNTbG93UGF0aDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitE
ZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2soCisgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2Nr
KiBibG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQoreworICAgIFN0dWJJbmZvU3Vt
bWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkoYmxvY2stPnZtKCksIHN0
dWJJbmZvKTsKKyAgICBpZiAoIWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKKyAgICAgICAgcmV0dXJu
IERlbGV0ZUJ5U3RhdHVzKHN1bW1hcnksICpzdHViSW5mbyk7CisKKyAgICBEZWxldGVCeVN0YXR1
cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fc3RhdGUgPSBTaW1wbGU7CisgICAgc3dpdGNoIChzdHVi
SW5mby0+Y2FjaGVUeXBlKCkpIHsKKyAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAg
IHJldHVybiBEZWxldGVCeVN0YXR1cyhOb0luZm9ybWF0aW9uKTsKKworICAgIGNhc2UgQ2FjaGVU
eXBlOjpTdHViOiB7CisgICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBsaXN0ID0gc3R1YkluZm8t
PnUuc3R1YjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGxpc3RJbmRleCA9IDA7IGxpc3RJbmRl
eCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKKyAgICAgICAgICAgIGNvbnN0IEFjY2Vz
c0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7CisgICAgICAgICAgICBBU1NFUlQo
IWFjY2Vzcy52aWFQcm94eSgpKTsKKworICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBhY2Nlc3Muc3RydWN0dXJlKCk7CisgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKTsKKwor
ICAgICAgICAgICAgc3dpdGNoIChhY2Nlc3MudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEFj
Y2Vzc0Nhc2U6OkRlbGV0ZU1pc3M6CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0
ZU5vbkNvbmZpZ3VyYWJsZTogeworICAgICAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZh
cmlhbnQoYWNjZXNzLmlkZW50aWZpZXIoKSwgYWNjZXNzLnR5cGUoKSA9PSBBY2Nlc3NDYXNlOjpE
ZWxldGVNaXNzID8gdHJ1ZSA6IGZhbHNlLCBzdHJ1Y3R1cmUsIG51bGxwdHIsIGludmFsaWRPZmZz
ZXQpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJz
aW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpEZWxldGU6IHsKKyAgICAgICAg
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CisgICAgICAgICAgICAgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbkZyb21F
eGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShzdHJ1Y3R1cmUsIGFjY2Vzcy5pZGVudGlmaWVy
KCkudWlkKCksIG9mZnNldCk7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQs
IG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIGlmICghbmV3U3Ry
dWN0dXJlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpz
bG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCks
IHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBhY2Nlc3Mub2Zmc2V0KCkpOworCisgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFy
eSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9u
KHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
RGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAg
ICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0
ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGlu
ZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hl
RXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisKKyAgICBmb3IgKElDU3Rh
dHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAgICAgICBJQ1N0YXR1cyBz
dGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAgICAgICAgYXV0byBibGVzcyA9
IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJlc3VsdCkgLT4gRGVsZXRlQnlTdGF0dXMgewor
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9yaWdpbikpIHsKKyAgICAg
ICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVGb3JCYXNl
bGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5
dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1l
cmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVk
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworCisgICAgICAgIGlmIChzdGF0dXMuc3R1
YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9w
dGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgICAgICAgICAg
ICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
c3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBibGVzcygqc3RhdHVzLmRl
bGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVGb3JCYXNlbGluZShiYXNl
bGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6c2xv
d1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAg
IHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgIHJldHVy
biBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBEZWxldGVC
eVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90aGVyKQoreworICAgIGlmIChv
dGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSB8
fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IERlbGV0ZUJ5
U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7CisgICAgfTsKKwor
ICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAg
KnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTaW1wbGU6CisgICAg
ICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAgICAgICByZXR1cm4gbWVy
Z2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlhbnQgOiBvdGhlci5tX3Zh
cmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgIGNhc2UgT2JzZXJ2
ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgfQorCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1
czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAgIGlmIChtX3N0YXRlICE9
IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0Y2hp
bmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICBy
ZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgfSk7
CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZv
cm1hdGlvbjsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBEZWxldGVCeVN0YXR1czo6c2luZ2xl
SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0g
bV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3ZhcmlhbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0gcmVz
dWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2
b2lkIERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBmb3IgKERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAg
ICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBEZWxldGVCeVN0YXR1
czo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG1fdmFyaWFu
dHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGVsZXRlQnlT
dGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigi
KTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAg
ICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGUiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIkxpa2VseVRh
a2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xv
d1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJpbnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50
cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVhZDYwMmI2NTE3
MGMxNDYwMjczN2RkN2NjODU1NzY5OGY1ZjcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAgLTAsMCArMSwxMDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50
SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJFeGl0
RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiU3R1YkluZm9TdW1t
YXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3NDYXNlOworY2xhc3MgQ29k
ZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNzIERlbGV0ZUJ5U3RhdHVz
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVt
IFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNoZWQgc28gd2UgaGF2ZSBu
byBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAgICAgICAgLy8gSXQncyBj
YWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxlLAorICAgICAgICAvLyBJ
dCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAgIExpa2VseVRha2VzU2xv
d1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0aGUgc2xvdyBwYXRo
LgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsKKworICAgIERlbGV0ZUJ5
U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCisgICAgeworICAgIH0K
KworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1f
c3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3Rh
Y2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlz
U2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBW
ZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJuIG1fdmFyaWFu
dHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBjb25zdDsK
KworICAgIERlbGV0ZUJ5U3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CisKKyAgICAvLyBBdHRl
bXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVj
dHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYp
OworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXpl
KFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQm
KTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CisKKyAgICBzdGF0
aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVz
TWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3Rh
dGljIERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxEZWxl
dGVCeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0
YXR1c01hcC5oCmluZGV4IGRiZDVhODgyMzEyNDIyZDRlOGIyZWRkM2I3OTgyMmM3NjdhN2JiYzgu
LmYwMzE5MDExNWEzYjhlNDJiNGViOGI4NzQwM2FmMmQ4NGUwMzc0ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zNyw2ICszNyw3IEBAIGNs
YXNzIENvZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwogY2xhc3MgSW5CeUlkU3RhdHVzOwog
Y2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0
dXJlU3R1YkluZm87CiBzdHJ1Y3QgQnlWYWxJbmZvOwogCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVj
dCBJQ1N0YXR1cyB7CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIgfTsKICAg
ICBJbkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIFB1dEJ5SWRTdGF0dXMq
IHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlU3RhdHVz
IHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVz
LCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCBjOTQ4
NGI0ODVhZGZlNmRhYjRjY2YyYjdhYTY0NWJmNzg4OTgwODMyLi5kNjE1YTEzZDljM2M0NzVhNjE2
YzJlNTQ3NzI5NTU0NjE2OWM0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBAIFJlY29yZGVk
U3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYg
b3RoZXIpCiAgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CiAgICAgcHV0cyA9IFdURk1v
dmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RGTW92ZShvdGhlci5pbnMpOworICAgIGRlbGV0
ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwogICAgIHNocmlua1RvRml0KCk7CiAgICAgcmV0
dXJuICp0aGlzOwogfQpAQCAtNzUsMTAgKzc2LDIwIEBAIEluQnlJZFN0YXR1cyogUmVjb3JkZWRT
dGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNv
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVsZXRlQnlTdGF0dXMqIFJlY29yZGVkU3RhdHVz
ZXM6OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0
IERlbGV0ZUJ5U3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPERlbGV0ZUJ5U3RhdHVzPihzdGF0dXMpOworICAgIERlbGV0ZUJ5U3RhdHVzKiByZXN1bHQg
PSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgZGVsZXRlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29k
ZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
dm9pZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgc2xvdFZp
c2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKICAgICAgICAgcGFpci5zZWNv
bmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBk
ZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3Ip
OwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBz
bG90VmlzaXRvcikKQEAgLTg5LDYgKzEwMCw4IEBAIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAgICBwYWlyLnNlY29uZC0+
bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGlucykKICAg
ICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1
dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xv
dFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERl
bGV0aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5oCmluZGV4IGIzNTVlOWI2MjMzODQ2MjkyNjQ4MmM3YzFiOTFmNDIxZmZl
NjIwZDAuLjllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4ZDA1NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5o
IgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIK
ICNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCkBA
IC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBHZXRCeVN0YXR1
cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEdldEJ5U3RhdHVzJik7
CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwg
Y29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVz
KGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICBEZWxldGVCeVN0
YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IERlbGV0ZUJ5
U3RhdHVzJik7CiAgICAgCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOwog
ICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKQEAgLTYzLDEyICs2NSwxNCBAQCBz
dHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMoZ2V0cyk7CiAgICAgICAgIGZ1
bmMocHV0cyk7CiAgICAgICAgIGZ1bmMoaW5zKTsKKyAgICAgICAgZnVuYyhkZWxldGVzKTsKICAg
ICB9CiAgICAgCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0czsKICAgICBWZWN0b3I8c3Rk
OjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3RhdHVzPj4+IHB1dHM7
CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8SW5CeUlk
U3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5p
cXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBkZWxldGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZTk1ODAwYWZmMjY3OTVhNDJkOTQ2Mzk0Y2JkZTUz
MDk2ODhjZGM0Ni4uMjFmMDAzYTE5MGU1Y2NiYmRmYTA2ODQ1YzA2ZWM2MjE1Nzc2YTQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtMzcwOSw2ICszNzA5LDQxIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3Ig
dHJhbnNpdGlvbnM7CisKKyAgICAgICAgLy8gT3JkaW5hcmlseSB5b3UgaGF2ZSB0byBiZSBjYXJl
ZnVsIHdpdGggY2FsbGluZyBzZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcoKQorICAgICAgICAv
LyBiZWNhdXNlIG9mIHRoZSBlZmZlY3Qgb24gY29tcGlsZSB0aW1lcywgYnV0IHRoaXMgbm9kZSBp
cyBGVEwtb25seS4KKyAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmco
dHJ1ZSk7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CisKKyAgICAgICAgaWYgKG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkud3Jp
dGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJTdHJ1Y3R1cmVzKCk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERh
dGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9ICpt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAg
ICAgIHRoaXNTZXQuZmlsdGVyKGJhc2UpOworICAgICAgICAgICAgaWYgKHRoaXNTZXQuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAodmFyaWFu
dC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
bmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgIFRyYW5zaXRpb24obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9s
ZFN0cnVjdHVyZSgpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbmV3
U2V0Lm1lcmdlKHRoaXNTZXQpOworICAgICAgICB9CisKKyAgICAgICAgb2JzZXJ2ZVRyYW5zaXRp
b25zKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbnMpOworICAgICAgICBpZiAoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGlj
dGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwpAQCAtNDEw
Niw2ICs0MTQxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEZpbHRlckdl
dEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2Ug
Q2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJlYWs7CiAKQEAgLTQyODcsNiArNDMyMywxMyBA
QCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0
YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0
ZSgpKQorICAgICAgICAgICAgbm9kZS0+ZGVsZXRlQnlTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1f
c3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDUzYjAxNDgzZWQ0MTQ5MDg0ODc1MWRk
YjMzNjlkMjE2YmNiNWQ1YzguLmJlNjcxMjFjZTMxMzg1ZGZkOTVlN2RiNDE4OWJkOGNjZjc4OTg4
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIENoZWNr
QXJyYXlPckVtcHR5OgpAQCAtMTI2Niw3ICsxMjY3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOiB7CisgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRl
ZEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IGU2ZDViNjVhNGQwMTE2YzY4NmFlMDZlMTE4Y2Q3ZmNhOTM3NjcxY2YuLmNkNzY2OTQ3OTRiNjM2
Yjk5Y2E5MGM2OGY5YmE0YjJmMGUyM2IwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAi
REZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUg
IkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKQEAgLTI0OSw2ICsyNTAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFu
ZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlzRGly
ZWN0LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSk7CisKKyAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5
SWQoCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMpOwogICAgIAogICAgIC8vIEVp
dGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRp
dGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhv
bGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBA
IC00NjE0LDYgKzQ2MTgsMTA0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgIGdldHRlciwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgcmVnaXN0ZXJPZmZzZXQs
ICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIHByZWRpY3Rpb24pOwogfQogCit2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5h
dGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBEZWxldGVC
eVN0YXR1cyBkZWxldGVCeVN0YXR1cykKK3sKKyAgICBpZiAoIWRlbGV0ZUJ5U3RhdHVzLmlzU2lt
cGxlKCkgfHwgIWRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKCkuc2l6ZSgpIHx8ICFPcHRpb25zOjp1
c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNl
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVsZXRlQnlTdGF0dXMudmFy
aWFudHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAgIGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwo
KQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmco
KQorICAgICAgICAgICAgfHwgZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPiBPcHRp
b25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAg
ICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJ
ZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBP
cEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2UpOworCisgICAgICAg
IGJvb2wgaGFzSGl0ID0gZmFsc2U7CisgICAgICAgIGJvb2wgaGFzTWlzcyA9IGZhbHNlOworICAg
ICAgICBib29sIGhhc01pc3NOb25jb25maWd1cmFibGUgPSBmYWxzZTsKKworICAgICAgICBmb3Ig
KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFu
dHMoKSkgeworICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9s
ZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7
CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBoYXNIaXQgPSB0cnVlOworICAgICAgICAgICAg
fSBlbHNlIGlmICh2YXJpYW50LnJlc3VsdCgpKQorICAgICAgICAgICAgICAgIGhhc01pc3MgPSB0
cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGhhc01pc3NOb25jb25maWd1
cmFibGUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFoYXNIaXQpIHsKKyAgICAg
ICAgICAgIGlmICgoaGFzTWlzcyAmJiAhaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkgfHwgKCFoYXNN
aXNzICYmIGhhc01pc3NOb25jb25maWd1cmFibGUpKSB7CisgICAgICAgICAgICAgICAgU3RydWN0
dXJlU2V0IGJhc2VTZXQ7CisKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IERlbGV0ZUJ5SWRW
YXJpYW50JiB2YXJpYW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYmFzZVNldC5hZGQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoYmFzZVNldCkpLCBiYXNlKTsKKyAgICAgICAgICAgICAgICBzZXQoZGVzdGluYXRp
b24sIGpzQ29uc3RhbnQoanNCb29sZWFuKGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF0ucmVz
dWx0KCkpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1f
bXVsdGlEZWxldGVCeU9mZnNldERhdGEuYWRkKCk7CisgICAgICAgIGRhdGEtPnZhcmlhbnRzID0g
ZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKTsKKyAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJl
ciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoTXVsdGlEZWxldGVCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBiYXNlKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVsZXRlQnlTdGF0dXMudmFy
aWFudHMoKS5zaXplKCkgPT0gMSk7CisgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRl
bGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF07CisKKyAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0
dXJlKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJy
ZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgYWRkVG9H
cmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlh
bnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgICAgIHNldChkZXN0aW5hdGlvbiwganND
b25zdGFudChqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVyRGVsZXRlQnlTdGF0dXMsIE9wSW5mbyhtX2dy
YXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkRGVsZXRlQnlTdGF0dXMoY3VycmVudENv
ZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwgYmFzZSk7CisgICAgYWRkVG9HcmFwaChDaGVj
a1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCkpKSwgYmFzZSk7CisgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnRy
YW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOworICAgIEFTU0VSVCh2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICBBU1NFUlQoaXNWYWxpZE9mZnNldCh2YXJpYW50
Lm9mZnNldCgpKSk7CisKKyAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CisgICAgVHJhbnNpdGlv
biogdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCisgICAgICAgIG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBi
YXNlOworICAgIGVsc2UKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRC
dXR0ZXJmbHksIGJhc2UpOworCisgICAgU3RvcmFnZUFjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBo
Lm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAgZGF0YS0+b2Zmc2V0ID0gdmFyaWFudC5v
ZmZzZXQoKTsKKyAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsK
KworICAgIGFkZFRvR3JhcGgoCisgICAgICAgIFB1dEJ5T2Zmc2V0LAorICAgICAgICBPcEluZm8o
ZGF0YSksCisgICAgICAgIHByb3BlcnR5U3RvcmFnZSwKKyAgICAgICAgYmFzZSwKKyAgICAgICAg
anNDb25zdGFudChKU1ZhbHVlKCkpKTsKKworICAgIGFkZFRvR3JhcGgoUHV0U3RydWN0dXJlLCBP
cEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAgIHNldChkZXN0aW5hdGlvbiwganNDb25zdGFu
dChqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkpKTsKKyAgICByZXR1cm47Cit9CisKIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAogICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlk
U3RhdHVzLCBib29sIGlzRGlyZWN0KQogewpAQCAtNTk0NCwxNSArNjA0Niw0OSBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BEZWxCeUlkPigpOwogICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwogICAgICAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJl
bWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0
LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSkp
OworICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMgZGVsZXRlQnlTdGF0dXMgPSBEZWxldGVCeVN0
YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGlu
ZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdp
bigpKTsKKyAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2Us
IGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2RlbF9ieV92
YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wRGVsQnlWYWw+KCk7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1f
YmFzZSk7Ci0gICAgICAgICAgICBOb2RlKiBrZXkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7
Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWws
IGJhc2UsIGtleSkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29sIHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVs
ZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
YmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVudENv
ZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAw
OworCisgICAgICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgeworCisgICAgICAg
ICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IGRlbGV0ZUJ5U3Rh
dHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51
aWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzQ2VsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVl
emVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVu
dCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29t
cGlsZUFzRGVsZXRlQnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJZCkKKyAgICAgICAg
ICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBiYXNlLCBwcm9w
ZXJ0eSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X3ZhbCk7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBiMjMx
OGZlMDNhZWQ0MWUwMzA5NTg3ZTdkZjkwNzY5Y2IwNGUzYzQ5Li43MDk0M2UwNWVkMjljMmM5OTEx
OTdhNWUyYmM1MmYyNmY2YmI4NzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaApAQCAtNDczLDYgKzQ3Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKQEAgLTEyODQsNiArMTI4NSwxNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUtPmNoaWxkMSgp
KSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAgcmVhZChKU0Nl
bGxfc3RydWN0dXJlSUQpOworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7CisgICAg
ICAgIEFic3RyYWN0SGVhcCBoZWFwKE5hbWVkUHJvcGVydGllcywgbm9kZS0+bXVsdGlEZWxldGVC
eU9mZnNldERhdGEoKS5pZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgd3JpdGUoaGVhcCk7Cisg
ICAgICAgIGlmIChub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0cnVjdHVy
ZXMoKSkKKyAgICAgICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIGRl
ZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShncmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIgPSBub2RlLT5zdG9yYWdlQWNjZXNzRGF0YSgpLmlkZW50aWZp
ZXJOdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwCmluZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhkMmJmMDZk
ZWIuLmYxNzQ1ZWNhYTAxNWE5NmRlYmYwZGMxYTliYWE5MjgxMjFkMzk2NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04
Niw2ICs4Niw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90
aGluZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQog
ICAgICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3Nl
IHRoYXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCmluZGV4IGI0M2Y3Y2Y1NGUxMjE3NDcxNzZkZGNlOTY1YjZjODE4ZjI5MTYxODUuLjEz
NzlmYWM4MzA2YzNlMjI4Y2M5ZGMyMjc0YjU0ZWQ4NWY0MDQwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC01
MDksNiArNTA5LDM2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNh
c2UgTXVsdGlEZWxldGVCeU9mZnNldDogeworICAgICAgICAgICAgICAgIEVkZ2UgYmFzZUVkZ2Ug
PSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gYmFzZUVkZ2Uu
bm9kZSgpOworICAgICAgICAgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0g
bm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKTsKKworICAgICAgICAgICAgICAgIEFic3Ry
YWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2UpOworCisgICAgICAgICAg
ICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92
ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgorICAgICAgICAgICAg
ICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29u
c3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgorCisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRz
W2ldOworCisgICAgICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLmNvbnRhaW5zKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0gPSBkYXRhLnZhcmlhbnRzLmxhc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudmFyaWFudHMucmVtb3ZlTGFzdCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGlmIChkYXRhLnZhcmlhbnRzLnNpemUoKSAhPSAxKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVtaXREZWxldGVCeU9m
ZnNldCgKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUs
IGRhdGEudmFyaWFudHNbMF0sIGRhdGEuaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICAg
ICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7CiAg
ICAgICAgICAgICAgICAgRWRnZSBiYXNlRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwpAQCAtMTMwOCw2
ICsxMzM4LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlKTsKICAgICAg
ICAgfQogICAgIH0KKworICAgIHZvaWQgZW1pdERlbGV0ZUJ5T2Zmc2V0KHVuc2lnbmVkIGluZGV4
SW5CbG9jaywgTm9kZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25z
dCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikK
KyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9yaWdpbi5leGl0T0spOworICAgICAgICBhZGRC
YXNlQ2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICBub2RlLT5jaGlsZDEo
KS5zZXRVc2VLaW5kKEtub3duQ2VsbFVzZSk7CisKKyAgICAgICAgaWYgKCF2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKSB7CisgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUs
IGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSk7CisgICAgICAgICAgICBub2RlLT5vcmlnaW4g
PSBub2RlLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3Ry
YW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5u
ZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAgIEVkZ2UgcHJvcGVydHlTdG9yYWdlOworCisgICAg
ICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAgICAgIHBy
b3BlcnR5U3RvcmFnZSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwcm9wZXJ0eVN0b3JhZ2UgPSBFZGdlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4s
IG5vZGUtPmNoaWxkMSgpKSk7CisKKyAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEgPSAq
bV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgICAgICBkYXRhLm9mZnNldCA9
IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50
aWZpZXJOdW1iZXI7CisKKyAgICAgICAgTm9kZSogY2xlYXJWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgSlNDb25zdGFudCwgb3JpZ2luLCBP
cEluZm8obV9ncmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
UHV0QnlPZmZzZXQsIG9yaWdpbiwgT3BJbmZvKCZkYXRhKSwgcHJvcGVydHlTdG9yYWdlLCBub2Rl
LT5jaGlsZDEoKSwgRWRnZShjbGVhclZhbHVlKSk7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQdXRTdHJ1Y3R1
cmUsIG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKSwgT3BJbmZvKHRyYW5zaXRpb24pLAorICAgICAg
ICAgICAgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSk7CisgICAgICAgIG5vZGUtPm9yaWdp
biA9IG5vZGUtPm9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICB9CiAgICAgCiAgICAgdm9p
ZCBhZGRCYXNlQ2hlY2soCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9k
ZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1NWQzYzhmZDVk
Y2Y4ZmEyZWZiYTM3Zjk2ZGM5MDk5ZDQ5NzI1MTgxLi45MmMwMzhmMDU5MDJlZThjMzEwYzVhMTEz
ZDY0OTVkMDUwNTEwY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CkBAIC0xODYsNiArMTg2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgQ2hlY2tWYXJhcmdzOgogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgog
ICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6
CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIEludDUy
UmVwOgpAQCAtMjQ1LDYgKzI0Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRGF0ZUdldEludDMyT3JOYU46CiAgICAgY2FzZSBEYXRl
R2V0VGltZToKICAgICBjYXNlIERhdGFWaWV3R2V0SW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZTk3ZGUxMGY2ZjRjZGMxNWJhZWZiMTBiN2Vj
NjA2MjgyNzgzNTk1NS4uMTQyZDc4YjhjNDM2ODFmYzMzZmZmMzBiNmU5YjhkMjhkYjg5OWU3MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xODE1
LDYgKzE4MTUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBj
YXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6ICB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+
KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZTogewogICAgICAgICAgICAgLy8gRklY
TUU6IEludHJvZHVjZSBhIHZhcmlhbnQgb2YgTWF0Y2hTdHJ1Y3R1cmUgdGhhdCBkb2Vzbid0IGRv
IGEgY2VsbCBjaGVjay4KQEAgLTI1ODAsNiArMjU4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAgICAgIGNh
c2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDY5ZTI5MDBhZWRkNjlkMjQ1NWYyNTE0
MzMyZmNkOTQ1NzU4ZTFiMGYuLmFmMjgyNjczZTQ1YzI3MWVmODUzZDljMjJlYmY5YWE3MTYzZTVk
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0zMDIsNiArMzAy
LDEyIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJl
Zml4U3RyLCBOb2RlKiBub2RlLCBEdW1wQ29udGV4CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkYXRhLnZhcmlhbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCBpbkNvbnRleHQoZGF0YS52YXJpYW50c1tpXSwgY29udGV4dCkpOwogICAgIH0KKyAg
ICBpZiAobm9kZS0+aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEoKSkgeworICAgICAgICBNdWx0
aURlbGV0ZUJ5T2Zmc2V0RGF0YSYgZGF0YSA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRh
KCk7CisgICAgICAgIG91dC5wcmludChjb21tYSwgImlkIiwgZGF0YS5pZGVudGlmaWVyTnVtYmVy
LCAieyIsIGlkZW50aWZpZXJzKClbZGF0YS5pZGVudGlmaWVyTnVtYmVyXSwgIn0iKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLnZhcmlhbnRzW2ldLCBj
b250ZXh0KSk7CisgICAgfQogICAgIGlmIChub2RlLT5oYXNNYXRjaFN0cnVjdHVyZURhdGEoKSkg
ewogICAgICAgICBmb3IgKE1hdGNoU3RydWN0dXJlVmFyaWFudCYgdmFyaWFudCA6IG5vZGUtPm1h
dGNoU3RydWN0dXJlRGF0YSgpLnZhcmlhbnRzKQogICAgICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCBpbkNvbnRleHQoKnZhcmlhbnQuc3RydWN0dXJlLmdldCgpLCBjb250ZXh0KSwgIj0+IiwgdmFy
aWFudC5yZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDk0N2Vm
YWFiYTllNjQ5NmIzYjA1YzZmNTUxNDJhYjdjNzdiNWI1YTIuLjJjMjUxOTZmYjA1YzQ5Nzc5NGI1
ZGRmYzY2MWRjNzdmZjFhMGUwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
QEAgLTExMDAsNiArMTEwMCw3IEBAIHB1YmxpYzoKICAgICBCYWc8U3dpdGNoRGF0YT4gbV9zd2l0
Y2hEYXRhOwogICAgIEJhZzxNdWx0aUdldEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aUdldEJ5T2Zmc2V0
RGF0YTsKICAgICBCYWc8TXVsdGlQdXRCeU9mZnNldERhdGE+IG1fbXVsdGlQdXRCeU9mZnNldERh
dGE7CisgICAgQmFnPE11bHRpRGVsZXRlQnlPZmZzZXREYXRhPiBtX211bHRpRGVsZXRlQnlPZmZz
ZXREYXRhOwogICAgIEJhZzxNYXRjaFN0cnVjdHVyZURhdGE+IG1fbWF0Y2hTdHJ1Y3R1cmVEYXRh
OwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhPiBtX29iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE7CiAgICAgQmFnPENhbGxWYXJhcmdzRGF0YT4gbV9jYWxsVmFyYXJnc0RhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBiOTI4ODEwZTEwMTU1
M2IxOWFmNTEzNDQyYzAzZWJlZWMwNDgwZjJiLi4xY2NhOGIyYWM0MWNiZTdmNDk2ZDNjOTZhN2I4
ZGQxMDAwMmQ1ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
QEAgLTEwOSw2ICsxMDksNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFN0ckNhdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmluZGV4IGRj
YjJiNTlkY2FjYmIyMTkzYTgyYTBiOTczMzM5OWYwNTc0MmE0MzguLmY3M2FmNjAwMTFjMTUwMWQw
ODBiMWVlMDZiYzdiMGFhNjVjMzZkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmNwcApAQCAtNTcsNiArNTcsMTUgQEAgYm9vbCBNdWx0aVB1dEJ5T2Zmc2V0RGF0YTo6cmVhbGxv
Y2F0ZXNTdG9yYWdlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTXVsdGlE
ZWxldGVCeU9mZnNldERhdGE6OndyaXRlc1N0cnVjdHVyZXMoKSBjb25zdAoreworICAgIGZvciAo
dW5zaWduZWQgaSA9IHZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAodmFyaWFu
dHNbaV0ud3JpdGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBCcmFuY2hUYXJnZXQ6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAppbmRleCAxMzQ1NWI1YzI5ZjA3MGZlZjJmOTkxOTUyYmNmZjAwN2ZlYTkxNzI2
Li4wOTg2ZjlhNzFmY2MxNzk4NzU3ZjRhZWVkZDlhYjQ2MjkxYzhmNGI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkRGR1RyYW5z
aXRpb24uaCIKICNpbmNsdWRlICJERkdVc2VLaW5kLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKICNpbmNsdWRlICJH
ZXRCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJPcGVy
YW5kcy5oIgpAQCAtOTIsNiArOTMsMTMgQEAgc3RydWN0IE11bHRpUHV0QnlPZmZzZXREYXRhIHsK
ICAgICBib29sIHJlYWxsb2NhdGVzU3RvcmFnZSgpIGNvbnN0OwogfTsKIAorc3RydWN0IE11bHRp
RGVsZXRlQnlPZmZzZXREYXRhIHsKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyOworICAg
IFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMj4gdmFyaWFudHM7CisKKyAgICBib29sIHdyaXRl
c1N0cnVjdHVyZXMoKSBjb25zdDsKK307CisKIHN0cnVjdCBNYXRjaFN0cnVjdHVyZVZhcmlhbnQg
ewogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlOwogICAgIGJvb2wgcmVzdWx0OwpA
QCAtMjAxNCw2ICsyMDIyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc011bHRpUHV0
QnlPZmZzZXREYXRhKCkpOwogICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPE11bHRpUHV0QnlP
ZmZzZXREYXRhKj4oKTsKICAgICB9CisKKyAgICBib29sIGhhc011bHRpRGVsZXRlQnlPZmZzZXRE
YXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IE11bHRpRGVsZXRlQnlPZmZzZXQ7
CisgICAgfQorCisgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEmIG11bHRpRGVsZXRlQnlPZmZz
ZXREYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YSgpKTsKKyAgICAgICAgcmV0dXJuICptX29wSW5mby5hczxNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YSo+KCk7CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzTWF0Y2hTdHJ1Y3R1cmVEYXRhKCkKICAg
ICB7CkBAIC0yOTc2LDYgKzI5OTUsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8UHV0QnlJZFN0YXR1cyo+KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNEZWxldGVCeVN0
YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJEZWxldGVCeVN0YXR1
czsKKyAgICB9CisKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlQnlTdGF0dXMoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGhhc0RlbGV0ZUJ5U3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8RGVsZXRlQnlTdGF0dXMqPigpOworICAgIH0KKwogICAgIHZvaWQgZHVtcENoaWxk
cmVuKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkMSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGUyMTFlYTc3ZDg1NDE5OWJi
ODQ2M2ZhZWMzN2JmNWM0MWM1Zjk3ZTcuLmQxMzY3MDFlN2I3NjZmNDY4MDMzOWIwMTUxNmZmMGZk
MWUwYzQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI1
Miw2ICsyNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8o
TXVsdGlHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTXVsdGlQ
dXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE11bHRpRGVsZXRlQnlP
ZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRB
cnJheUxlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0VmVjdG9yTGVuZ3Ro
LCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwg
Tm9kZVJlc3VsdEludDMyKSBcCkBAIC01MjYsNiArNTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZpbHRlckdldEJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgLyog
RGF0YSB2aWV3IGFjY2VzcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRJbnQsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlUmVzdWx0SlMpIC8qIFRoZSBnZXRzIGFyZSBtdXN0IGdlbmVyYXRlIGZv
ciBub3cgYmVjYXVzZSB0aGV5IGRvIGJvdW5kcyBjaGVja3MgKi8gXAogICAgIG1hY3JvKERhdGFW
aWV3R2V0RmxvYXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlUmVzdWx0RG91YmxlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAwNWFjZGYyMzg3Njk3M2Y4OGU4MmI5YTczYjM0OWVl
Nzc5YjViOTg0Li5kMDBlYTYxZWEyOTVkMTY3MDNmNTY2NTY4ZmFlOTk3MTY1MWExMThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTEyMjAsNiArMTIyMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2Ug
RmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZh
dWx0OgpAQCAtMjU3MCw2ICsyNTcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAg
ICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRDaGVja3MoKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDI4ODg1OGIzOGMxNmE2NWE4Yzhl
YmRiOWQ0MzcwMTI4MzQ3MmE1MGEuLjhmMTkyNjA4MDU2Njk0N2JhYmEwMmYxNzc2YjU0MDk0YjEw
ZTBiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC05ODQsNiArOTg0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAgICAgICBjYXNlIERl
bGV0ZUJ5SWQ6CisgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAgY2Fz
ZSBMb2dpY2FsTm90OgogICAgICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgICAgICBjYXNlIENv
bXBhcmVMZXNzRXE6CkBAIC0xMzk1LDYgKzEzOTYsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0
ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIENsZWFyQ2F0Y2hMb2NhbHM6CiAgICAgICAgIGNhc2Ug
RGF0YVZpZXdTZXQ6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIyZDE0Mjli
MmUwNTY0ZTYwMWEwYzdmYzk2NjRiNTVlYWMuLmQ2ZTdjOWUzMDg1NzIyNGM4MjU4NTY4MmNhYjZk
MDdhZTdkMWUxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCkBAIC0zNjEsNiArMzYxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBj
YXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVz
OgogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZXNlIHRvIGJlIG1vdmVkIGFueXdoZXJlIG90
aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0sIHNpbmNlIHdlIHdhbnQgdGhlbQogICAgICAgICAv
LyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0IHRoZSBwb2ludCBpbiBjb250cm9sIGZsb3cgaGVy
ZSB0aGUgdXNlciBwdXQgdGhlbS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjA4LDYgKzYw
OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2lu
dDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAg
ICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRFbnVtZXJhYmxlTGVuZ3Ro
OgogICAgIGNhc2UgSGFzR2VuZXJpY1Byb3BlcnR5OgogICAgIGNhc2UgSGFzU3RydWN0dXJlUHJv
cGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAppbmRleCBlNjE1MTUxNzUwNGNiMjU3ZWUzYjU4MjM4ZmZhODJkYWI3Mjk4
Njg0Li5mMTExNGYxZGI4ZGM5MGM5Yzg0ZDU1OGQwMTk4N2VkM2QwN2ZkMmY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
QEAgLTQxOTAsNiArNDE5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgogICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUp
OwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00MjA4LDYgKzQy
MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBBcml0aElNdWw6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQ
dXRCeU9mZnNldDoKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAppbmRleCBjOGMxN2YyYWZkMzNhMGI0MmZlZjY0NWFiZjNhYmYwNmJjNTk2ZDQ3Li45MDc5
NWFkNmQ5ODA4ZmI4NmEyZGJmYzBmMzU2NTRhZTE3ZTFhODFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTUyNTUsNiArNTI1
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBj
YXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgog
ICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG5vZGUpOwogICAgICAgICBub1Jl
c3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01MjY5LDYgKzUyNzAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aElNdWw6CiAg
ICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAg
ICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgY2FzZSBGaWF0SW50NTI6CiAgICAgY2Fz
ZSBDaGVja0JhZENlbGw6CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCmluZGV4
IDdjN2FiZTgzZTIzYTVkODhhMzIwODNhNTBlZGYzNGQzNmNkNjM2OWIuLjkyZDBjOGYxYzQ1NjM3
MzkwYzA2MzRhODE1ODI0Mjg1ZTk3YTNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcApAQCAtMjg3LDYgKzI4
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAg
ICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRp
UHV0QnlPZmZzZXQ6CisgICAgICAgICAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0Ogog
ICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBjb3VudCB0aGVzZSB1c2VzLgogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCkBAIC0zNjIsNiArMzYzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAg
ICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlQdXRC
eU9mZnNldDoKKyAgICAgICAgICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAg
ICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IHRoZXNlIHVzZXMuCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAKaW5kZXggM2E3NzcxMTQ1Yzc2MGIzNDgyZTdlMWFjOWI2NDk5
MDFkZmYxOWQ1YS4uMGQ2NWQ4Zjg5YWVjM2Q1OTQyZDJjZjgzZDZjZWQ4YTFiZmYzOThjYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKQEAgLTMxMSw2ICszMTEs
MTIgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
dmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPmRmZ1Nob3VsZFdhdGNoKCkpOwog
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50
cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlh
bnQubmV3U3RydWN0dXJlKCkgfHwgIXZhcmlhbnQub2xkU3RydWN0dXJlKCktPmRmZ1Nob3VsZFdh
dGNoKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAg
ICAgICAgICAgIGZvciAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1
Y3R1cmVTZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBv
cnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFz
ZS5jcHAKaW5kZXggNzRlYTYxOGU5MDExMjlhNTdlMmM4M2JiODkyYTc1YjdiODA2MzNiNy4uMGMz
NWE1MzY1Y2M0NmVmM2M3ODk5NDhmNGQyZTYwY2NmMDE3NmI5OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCkBA
IC0xOTgsNiArMTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2Ug
R2V0QnlPZmZzZXQ6IHsKQEAgLTM5OSw2ICs0MDAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlu
a1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCkubm9kZSgpID09IGNhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
cmVtb3ZlKG1fZ3JhcGgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDVjNjlkMWQzOGMxYzYxMDU5
OWZkMzAyOTk3MzQzNjBjYjIyN2FjYjIuLmUxZjU4OWYyNzM0M2JmZjkzNjIxNjE4OGRhZTNiNWM4
NjM2ODY4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKQEAgLTIzMyw2ICsyMzMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFRvVGhpczoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZz
ZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9m
ZnNldDoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgogICAgIGNhc2UgVG9Qcm9wZXJ0eUtleToKICAg
ICBjYXNlIFRocm93OgpAQCAtMzkyLDYgKzM5Myw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgor
ICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBDcmVhdGVUaGlzOgogICAg
IGNhc2UgQ3JlYXRlUHJvbWlzZToKICAgICBjYXNlIENyZWF0ZUdlbmVyYXRvcjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBmYjFkMDI1NTY1
N2Q4OGEzNTExYTI1YzViNDQ5YTQxNmRkYmMzZDA3Li5kNTc3ZjJkNTBjZDE1MTVjN2UwM2FlNGNm
NGExZTc4YTYxZDMxNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC0xMTc3LDYgKzExNzcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IE11bHRpUHV0QnlPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlTXVsdGlQdXRCeU9mZnNldCgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoK
KyAgICAgICAgICAgIGNvbXBpbGVNdWx0aURlbGV0ZUJ5T2Zmc2V0KCk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVN
YXRjaFN0cnVjdHVyZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTY5LDYgKzE1NzIsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgor
ICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgY29tcGlsZUZp
bHRlcklDU3RhdHVzKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEYXRlR2V0
SW50MzJPck5hTjoKQEAgLTgxMjQsNiArODEyOCwxMDYgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQoKQorICAgIHsKKyAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBNdWx0aURlbGV0
ZUJ5T2Zmc2V0RGF0YSYgZGF0YSA9IG1fbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKTsK
KworICAgICAgICB1bnNpZ25lZCBtaXNzQ29uZmlndXJhYmxlID0gMDsKKyAgICAgICAgdW5zaWdu
ZWQgbWlzc05vbmNvbmZpZ3VyYWJsZSA9IDA7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
ZGF0YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJp
YW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgaWYgKCF2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQucmVzdWx0KCkp
CisgICAgICAgICAgICAgICAgICAgICsrbWlzc0NvbmZpZ3VyYWJsZTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICsrbWlzc05vbmNvbmZpZ3VyYWJsZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIHVuaXF1ZUNhc2VDb3VudCA9
IGRhdGEudmFyaWFudHMuc2l6ZSgpOworICAgICAgICBpZiAobWlzc0NvbmZpZ3VyYWJsZSkKKyAg
ICAgICAgICAgIHVuaXF1ZUNhc2VDb3VudCAtPSBtaXNzQ29uZmlndXJhYmxlIC0gMTsKKyAgICAg
ICAgaWYgKG1pc3NOb25jb25maWd1cmFibGUpCisgICAgICAgICAgICB1bmlxdWVDYXNlQ291bnQg
LT0gbWlzc05vbmNvbmZpZ3VyYWJsZSAtIDE7CisgICAgICAgIGludCB0cnVlQmxvY2sgPSBtaXNz
Q29uZmlndXJhYmxlID8gdW5pcXVlQ2FzZUNvdW50IC0gMSA6IC0xOworICAgICAgICBpbnQgZmFs
c2VCbG9jayA9IG1pc3NOb25jb25maWd1cmFibGUgPyB1bmlxdWVDYXNlQ291bnQgLSAxIC0gISFt
aXNzQ29uZmlndXJhYmxlIDogLTE7CisKKyAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2NrLCAyPiBi
bG9ja3ModW5pcXVlQ2FzZUNvdW50KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2tz
LnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIGJsb2Nrc1tpXSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGV4aXQgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZl
Y3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCBiYXNlU2V0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNpemUo
KSwgYmxvY2sgPSAwOyBpLS07KSB7CisgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJp
YW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBp
ZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICBjYXNlcy5hcHBlbmQo
U3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW2Jsb2NrKytdLCBX
ZWlnaHQoMSkpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYXNlcy5hcHBl
bmQoU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW3ZhcmlhbnQu
cmVzdWx0KCkgPyB0cnVlQmxvY2sgOiBmYWxzZUJsb2NrXSwgV2VpZ2h0KDEpKSk7CisgICAgICAg
IH0KKyAgICAgICAgYm9vbCBzdHJ1Y3R1cmVzQ2hlY2tlZCA9IG1faW50ZXJwcmV0ZXIuZm9yTm9k
ZShtX25vZGUtPmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKGJhc2VTZXQpOworICAg
ICAgICBlbWl0U3dpdGNoRm9yTXVsdGlCeU9mZnNldChiYXNlLCBzdHJ1Y3R1cmVzQ2hlY2tlZCwg
Y2FzZXMsIGV4aXQpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQubV9u
ZXh0QmxvY2s7CisKKyAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCAyPiByZXN1bHRzOwor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpLCBibG9jayA9
IDA7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRh
LnZhcmlhbnRzW2ldOworICAgICAgICAgICAgaWYgKCF2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhi
bG9ja3NbYmxvY2tdLCBibG9jayArIDEgPCBibG9ja3Muc2l6ZSgpID8gYmxvY2tzW2Jsb2NrICsg
MV0gOiBleGl0KTsKKworICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsK
KyAgICAgICAgICAgICAgICBMVmFsdWUgc3RvcmFnZTsKKworICAgICAgICAgICAgICAgIGlmIChp
c0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZSA9IGJhc2U7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBz
dG9yYWdlID0gbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseSk7
CisKKyAgICAgICAgICAgICAgICBzdG9yZVByb3BlcnR5KG1fb3V0LmludDY0WmVybywgc3RvcmFn
ZSwgZGF0YS5pZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50Lm9mZnNldCgpKTsKKworICAgICAgICAg
ICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSB2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdz
KCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3Mo
KSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgp
KTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICB3
ZWFrU3RydWN0dXJlSUQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpKSksIGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZhcmlhbnQucmVz
dWx0KCkgPyBtX291dC5ib29sZWFuVHJ1ZSA6IG1fb3V0LmJvb2xlYW5GYWxzZSkpOworICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgKytibG9jazsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChtaXNzTm9uY29uZmlndXJhYmxlKSB7CisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhibG9ja3NbZmFsc2VCbG9ja10pOworICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSkpOworICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1pc3ND
b25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1t0cnVlQmxv
Y2tdLCBleGl0KTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291
dC5ib29sZWFuVHJ1ZSkpOworICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwor
ICAgICAgICB9CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oZXhpdCwgY29udGludWF0aW9uKTsK
KyAgICAgICAgaWYgKCFzdHJ1Y3R1cmVzQ2hlY2tlZCkKKyAgICAgICAgICAgIHNwZWN1bGF0ZShC
YWRDYWNoZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAg
IG1fb3V0LnVucmVhY2hhYmxlKCk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJvb2xlYW4obV9vdXQucGhpKEludDMyLCByZXN1
bHRzKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU1hdGNoU3RydWN0dXJlKCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IDFhMGNmNTlmZmZkM2MwYTNhM2Rm
MjY1M2VhMTMzYTg1OGU0NjAxYzIuLjNlZDMwNDk1MjJiMDIwZmNhNTZiNjI0OGQ0NmY4OTRmYmY5
MTUxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC00NDQsMTEgKzQ0NCwxMSBA
QCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSgK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcqPihjZWxsKTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAg
IHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHJ1ZSwgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Ci0KLSAgICBpZiAocGFyc2VJbmRleChw
cm9wZXJ0eU5hbWUpKQorICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKKyAgICAg
ICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdHJ1ZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5E
ZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAg
CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAppbmRleCAyNWRmZjUzMzM3ODkxNDI4ZTYyZmE5NTE5ZGUxNGE3MTk0NGQ0
Yjc4Li44YjhlMTc5OTgyODhhNmFiNmY2OGVkOTY3ZDljN2RlN2I3NWNlNzUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0yMDExLDEyICsyMDExLDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXIKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBz
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgJmRlZmVycmVkV2F0Y2hwb2ludEZpcmUpOwogICAg
ICAgICAgICAgc2xvdC5zZXRIaXQob2Zmc2V0KTsKLSAgICAgICAgICAgIGlmICghc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpICYmIHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgIXN0cnVjdHVyZS0+aGFzSW5kZXhpbmdIZWFkZXIodGhpc09iamVj
dCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+bV9idXR0ZXJmbHkpOwot
ICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPm51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHko
dm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCksIG51bGxwdHIpOwotICAgICAgICAgICAgICAg
IG9mZnNldCA9IGludmFsaWRPZmZzZXQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+bWF4T2Zmc2V0KCkgPT0gaW52YWxpZE9mZnNldCk7Ci0gICAgICAgICAgICB9CisgICAgICAg
ICAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpIHx8ICF0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgICAgIHRoaXNP
YmplY3QtPnNldFN0cnVjdHVyZSh2bSwgc3RydWN0dXJlKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGQwMjg3OWZlNGNlZDUzZDAz
MWQwOTM4OWI5MDI0OWExMDg1NDc3NmIuLjY3Mzg0OGVjYzRlYWY0ZDYwNTBjNDg4MzhhN2RmMzRl
YmRmYTZmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBA
IC01MzEsMTAgKzUzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHx8IGhpamFja3NJbmRleGlu
Z0hlYWRlcigpOwogICAgIH0KICAgICAKLSAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyKGNvbnN0
IEpTQ2VsbCopIGNvbnN0OwotICAgIGJvb2wgbWF5SGF2ZUluZGV4aW5nSGVhZGVyKCkgY29uc3Q7
Ci0gICAgYm9vbCBjYW5DYWNoZURlbGV0ZUlDKCkgY29uc3Q7Ci0gICAgCisgICAgYm9vbCBoYXNJ
bmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqKSBjb25zdDsgICAgCiAgICAgYm9vbCBtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsKIAog
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5kZXggZmIyNzZkODM5
YmIxYjhiYjI0MmEzNTA2NjA0YjMyZTIxMDJjODI3Ni4uMTVkYWQyNmY5Yzc4MTg5YzNlZGZhOWIx
ODNhYzczZWE2MTI4NTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaApAQCAtMjU2LDIyICsyNTYsNiBAQCBpbmxpbmUgYm9vbCBTdHJ1
Y3R1cmU6Omhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCogY2VsbCkgY29uc3QKICAgICBy
ZXR1cm4ganNDYXN0PGNvbnN0IEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCktPm1vZGUoKSA9PSBX
YXN0ZWZ1bFR5cGVkQXJyYXk7CiB9CiAKLWlubGluZSBib29sIFN0cnVjdHVyZTo6bWF5SGF2ZUlu
ZGV4aW5nSGVhZGVyKCkgY29uc3QKLXsKLSAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5k
ZXhpbmdUeXBlKCkpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmICghaXNUeXBlZFZp
ZXcodHlwZWRBcnJheVR5cGVGb3JUeXBlKG1fYmxvYi50eXBlKCkpKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIFN0cnVjdHVyZTo6
Y2FuQ2FjaGVEZWxldGVJQygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFpc1R5cGVkVmlldyh0eXBl
ZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpOwotfQotCiBpbmxpbmUgYm9vbCBTdHJ1
Y3R1cmU6Om1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIHR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCgpICYmIGdsb2JhbE9iamVjdCgpID09IGxleGljYWxHbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0NDM4ZTg2MTk0
OThmNjNmODU2ODlhNWM3MWJiOTQ4ZTA4M2QwNTcuLjQzMDA3ZjNhNjYyYTljODgyMTYxYzY0NzQ3
MjgwNDUyNGZhNjNlNGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVk
ICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQg
dG8gYmUgY2FjaGVkIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0
aW9uLXNpbmtpbmcuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKG5vSW5s
aW5lLmFzc2VydC5ibGFja2JveCk6CisgICAgICAgIChub0lubGluZS5ibGFja2JveC5kb0FsbG9j
MSk6CisgICAgICAgIChub0lubGluZS5kb0FsbG9jMSk6CisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAoYmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3gucG9s
eXZhcmlhbnQpOgorICAgICAgICAoZG9BbGxvYzEpOgorICAgICAgICAobm9JbmxpbmUuZG9BbGxv
YzEuZG9BbGxvYzIpOgorICAgICAgICAobm9JbmxpbmUuZG9BbGxvYzIpOgorICAgICAgICAqIHN0
cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5qczogQWRkZWQuCisgICAgICAgIChhc3Nl
cnQpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0LmFzc2VydF90aHJvd3MpOgorICAgICAgICAo
bm9JbmxpbmUuYXNzZXJ0X3Rocm93cy5ibGFja2JveCk6CisgICAgICAgIChub0lubGluZS5ibGFj
a2JveC50ZXN0U2luZ2xlU3RydWN0dXJlLmRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmJs
YWNrYm94LnRlc3RTaW5nbGVTdHJ1Y3R1cmUpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmds
ZVN0cnVjdHVyZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLmRvRGVsZXRlMik6CisgICAgICAg
IChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUu
ZG9BbGxvYzIpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZS50ZXN0SW5s
aW5lU2luZ2xlU3RydWN0dXJlKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RJbmxpbmVTaW5nbGVT
dHJ1Y3R1cmUudGVzdEV4aXQuZG9EZWxldGUzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RJbmxp
bmVTaW5nbGVTdHJ1Y3R1cmUudGVzdEV4aXQpOgorICAgICAgICAobm9JbmxpbmUudGVzdEV4aXQu
dGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MuZG9BbGxvYzQpOgorICAgICAgICAobm9JbmxpbmUudGVz
dEV4aXQudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNp
bmdsZVN0cnVjdHVyZU1pc3MudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3Quc3RyaW5nX2Fw
cGVhcmVkX2hlcmUuZG9BbGxvYzUpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVj
dHVyZU1pc3MudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NO
b25Db25maWd1cmFibGUuZG9BbGxvYzYpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0
cnVjdHVyZU1pc3NTdHJpY3QudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUp
OgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFi
bGUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5LmRvQWxsb2M3KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlLnRlc3RTaW5nbGVTdHJ1Y3R1
cmVFbXB0eSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkudGVz
dFBvbHltb3JwaGljLmRvRGVsZXRlOCk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3Ry
dWN0dXJlRW1wdHkudGVzdFBvbHltb3JwaGljKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5
bW9ycGhpYy50ZXN0UG9seXZhcmlhbnQuZG9EZWxldGU5KToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RQb2x5bW9ycGhpYy50ZXN0UG9seXZhcmlhbnQucG9seXZhcmlhbnQpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudCk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0UG9seXZhcmlhbnQudGVzdENvbnN0YW50Rm9sZGluZy5kb0RlbGV0ZTEwKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RQb2x5dmFyaWFudC50ZXN0Q29uc3RhbnRGb2xkaW5nKToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RDb25zdGFudEZvbGRpbmcudGVzdE9iamVjdFNpbmtpbmcuZG9BbGxv
YzExKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RDb25zdGFudEZvbGRpbmcudGVzdE9iamVjdFNp
bmtpbmcpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iamVjdFNpbmtpbmcudGVzdFByb3h5LmRv
QWxsb2MxMik6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqZWN0U2lua2luZy50ZXN0UHJveHku
bm9JbmxpbmUuZG9EZWxldGUxMik6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqZWN0U2lua2lu
Zy50ZXN0UHJveHkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFByb3h5LnRlc3RUeXBlZEFycmF5
LmRvRGVsZXRlMTIpOgorICAgICAgICAobm9JbmxpbmUudGVzdFByb3h5LnRlc3RUeXBlZEFycmF5
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RUeXBlZEFycmF5LnRlc3RNaXNzTWl4ZWQuZG9EZWxl
dGUxMyk6CisgICAgICAgIChub0lubGluZS50ZXN0VHlwZWRBcnJheS50ZXN0TWlzc01peGVkKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTWl4ZWQudGVzdE1pc3NOb25NaXhlZC5kb0RlbGV0
ZTE0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTWl4ZWQudGVzdE1pc3NOb25NaXhlZCk6
CisgICAgICAgIChub0lubGluZS50ZXN0TWlzc05vbk1peGVkLnRlc3RCeVZhbC5kb0RlbGV0ZTE1
KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTm9uTWl4ZWQudGVzdEJ5VmFsKToKKwogMjAy
MC0wMy0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBza2lw
IHdhc20vZnVuY3Rpb24tdGVzdHMvZ3Jvdy1tZW1vcnktY2F1c2UtZ2MuanMgb24gbWVtb3J5IGxp
bWl0ZWQgZGV2aWNlcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRl
LXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2MzQ2
NGYzMTc3Y2I1OWZhNmNmOTI0ZTE0MjI3NDY1OTQwNDEzNQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcu
anMKQEAgLTAsMCArMSwyNiBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBT
ZXJpZXMgMyIKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0
aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorbm9J
bmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0dXJuIHgKK30K
K25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICBsZXQgb2Jq
ID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94
KG9iai55KQorICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgcmV0dXJuIG9iai55Cit9Citu
b0lubGluZShkb0FsbG9jMSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwMDsgKytpKSB7
CisgICAgZG9BbGxvYzEoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmN2NiY2JkNjk5YjNi
MDMyNjdjYjAxZjEyN2EwZjUyMmMxZWI1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21p
Y3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJvcGVydHkuanMKQEAgLTAsMCArMSw0
MSBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIKKworZnVu
Y3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorCitmdW5jdGlvbiBibGFja2Jv
eCh4KSB7CisgICAgcmV0dXJuIHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiBw
b2x5dmFyaWFudCh4KSB7CisgICAgYXNzZXJ0KGRlbGV0ZSB4LngpCit9CisKK2Z1bmN0aW9uIGRv
QWxsb2MxKCkgeworICAgIGxldCBvYmogPSB7fQorICAgIG9iai54ID0gNQorICAgIG9iai55ID0g
NworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgcG9seXZhcmlhbnQob2JqKQorICAg
IHJldHVybiBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzEpCisKK2Z1bmN0aW9uIGRvQWxsb2My
KCkgeworICAgIGxldCBvYmogPSB7fQorICAgIG9iai54ID0gNQorICAgIG9iai5iID0gOQorICAg
IG9iai55ID0gNworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgcG9seXZhcmlhbnQo
b2JqKQorICAgIHJldHVybiBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzIpCisKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGRvQWxsb2MxKCkKKyAgICBkb0FsbG9j
MigpCit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlu
bGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkzYmVlN2JjYzEyYzlkMmRkN2E0MjgxNjk1MTUwZjNmZmRiMzZhMTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5q
cwpAQCAtMCwwICsxLDQwOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlm
ICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQi
KQorfQorbm9JbmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGYpIHsKKyAg
ICB0cnkgeworICAgICAgICBmKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgcmV0dXJuCisgICAg
fQorICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lubGluZShh
c3NlcnRfdGhyb3dzKQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0dXJuIHgKK30K
K25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlKCkgewor
ICAgIGZ1bmN0aW9uIGRvQWxsb2MxKCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAg
b2JqLnggPSA1CisgICAgICAgIG9iai55ID0gNworICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9i
ai55KQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAgICAgICByZXR1cm4gb2JqLnkK
KyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzEpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jMSgpCisgICAgfQorfQorbm9JbmxpbmUo
dGVzdFNpbmdsZVN0cnVjdHVyZSkKKworZnVuY3Rpb24gdGVzdElubGluZVNpbmdsZVN0cnVjdHVy
ZSgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTIobykgeworICAgICAgICBhc3NlcnQoZGVsZXRl
IG8ueCkKKyAgICB9CisKKyAgICBmdW5jdGlvbiBkb0FsbG9jMigpIHsKKyAgICAgICAgbGV0IG9i
aiA9IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2Jq
LnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgZG9EZWxldGUyKG9iaikKKyAgICAgICAgcmV0
dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MyKQorCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMih7IGksIGY6IDQgfSkKKyAg
ICAgICAgZG9EZWxldGUyKHsgaSwgZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBkOiA0
IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsg
aSwgYjogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBhOiA0IH0pCisgICAgICAgIGRvQWxs
b2MyKCkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgewor
ICAgICAgICBkb0FsbG9jMigpCisgICAgfQorfQorbm9JbmxpbmUodGVzdElubGluZVNpbmdsZVN0
cnVjdHVyZSkKKworZnVuY3Rpb24gdGVzdEV4aXQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUz
KG9iaikgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgIH0KKyAgICBub0lubGlu
ZShkb0RlbGV0ZTMpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7Cisg
ICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZjogNCB9KQorICAgICAg
ICBkb0RlbGV0ZTMoeyBpLCBlOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGQ6IDQgfSkK
KyAgICAgICAgZG9EZWxldGUzKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBi
OiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBh
OiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdEV4aXQpCisKK2Z1bmN0aW9uIHRlc3RTaW5n
bGVTdHJ1Y3R1cmVNaXNzKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M0KCkgeworICAgICAgICBs
ZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSA1CisgICAgICAgIG9iai55ID0gNworICAgICAg
ICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai56KQor
ICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzQpCisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jNCgp
CisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MpCisKK2Z1bmN0aW9u
IHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IgorCisg
ICAgZnVuY3Rpb24gZG9BbGxvYzUoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBv
YmoueSA9IDUKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgIngiLCB7CisgICAg
ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAg
ICAgIH0pCisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFzc2VydF90
aHJvd3MoKCkgPT4gZGVsZXRlIG9iai54KQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9Cisg
ICAgbm9JbmxpbmUoZG9BbGxvYzUpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkgeworICAgICAgICBkb0FsbG9jNSgpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmds
ZVN0cnVjdHVyZU1pc3NTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNz
Tm9uQ29uZmlndXJhYmxlKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M2KCkgeworICAgICAgICBs
ZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnkgPSA1CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShvYmosICJ4IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAg
ICAgICAgIHZhbHVlOiA0MQorICAgICAgICB9KQorICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9i
ai55KQorICAgICAgICBhc3NlcnQoIShkZWxldGUgb2JqLngpKQorICAgICAgICByZXR1cm4gb2Jq
LnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzYpCisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jNigpCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUpCisKK2Z1bmN0aW9uIHRl
c3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNygpIHsKKyAg
ICAgICAgbGV0IG9iaiA9IHsgYTogMSwgYjogMn0KKyAgICAgICAgb2JqWzFdID0gNQorICAgICAg
ICBkZWxldGUgb2JqWzFdCisgICAgICAgIGJsYWNrYm94KCgpID0+IG9iai54ID0gNSkoKQorICAg
ICAgICBhc3NlcnQoT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMykKKyAgICAgICAgYXNzZXJ0
KGRlbGV0ZSBvYmouYSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmouYikKKyAgICAgICAgYXNz
ZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaikubGVuZ3Ro
ID09IDApCisgICAgICAgIG9iai54ID0gNworICAgICAgICByZXR1cm4gb2JqCisgICAgfQorICAg
IG5vSW5saW5lKGRvQWxsb2M3KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyAr
K2kpIHsKKyAgICAgICAgZG9BbGxvYzcoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVT
dHJ1Y3R1cmVFbXB0eSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljKCkgeworICAgIGZ1bmN0
aW9uIGRvRGVsZXRlOChvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICAg
ICAgcmV0dXJuIG9iagorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTgpCisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTgoeyBpLCBhOiA0IH0p
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAg
ICBkb0RlbGV0ZTgoeyBpLCBmOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTgoeyBpLCBl
OiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlOCh7IGksIGQ6
IDQgfSkKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTgo
eyBpLCBiOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTgoeyBpLCBhOiA0LCB5OiAxMCB9
KS55ID09PSB1bmRlZmluZWQpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgYTogNCB9KQorICAgIH0KK30KK25v
SW5saW5lKHRlc3RQb2x5bW9ycGhpYykKKworZnVuY3Rpb24gdGVzdFBvbHl2YXJpYW50KCkgewor
ICAgIGZ1bmN0aW9uIGRvRGVsZXRlOShvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmou
eSkKKyAgICAgICAgcmV0dXJuIG9iagorICAgIH0KKworICAgIGZ1bmN0aW9uIHBvbHl2YXJpYW50
KG9iaikgeworICAgICAgICByZXR1cm4gZG9EZWxldGU5KG9iaikKKyAgICB9CisgICAgbm9Jbmxp
bmUocG9seXZhcmlhbnQpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7ICsraSkgeworICAg
ICAgICBwb2x5dmFyaWFudCh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOSh7IGksIGY6IDQgfSkKKyAg
ICAgICAgYXNzZXJ0KGRvRGVsZXRlOSh7IGksIGU6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5l
ZCkKKyAgICAgICAgZG9EZWxldGU5KHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0ZTkoeyBp
LCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGI6IDQgfSkKKyAgICAgICAgYXNzZXJ0
KGRvRGVsZXRlOSh7IGksIGE6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICB9CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBwb2x5dmFy
aWFudCh7IGksIGE6IDQgfSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seXZhcmlhbnQpCisK
K2Z1bmN0aW9uIHRlc3RDb25zdGFudEZvbGRpbmcoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUx
MChvYmopIHsKKyAgICAgICAgaWYgKCR2bS5kZmdUcnVlKCkpIHsKKyAgICAgICAgICAgIG9iaiA9
IHsgaTogMCwgYTogNSwgeTogMjAgfQorICAgICAgICB9CisgICAgICAgIGFzc2VydChkZWxldGUg
b2JqLnkpCisgICAgICAgIGFzc2VydCgoZGVsZXRlIG9iai56KSArIDUgPT0gNikKKyAgICAgICAg
cmV0dXJuIG9iagorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEwKQorCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlMTAo
eyBpLCBhOiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlMTAo
eyBpLCBmOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTEwKHsgaSwgZTogNCwgeTogMTAg
fSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0RlbGV0ZTEwKHsgaSwgZDogNCB9KQorICAg
ICAgICBkb0RlbGV0ZTEwKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTEwKHsgaSwgYjog
NCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RDb25zdGFudEZvbGRpbmcpCisKK2Z1bmN0aW9u
IHRlc3RPYmplY3RTaW5raW5nKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2MxMShpKSB7CisgICAg
ICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDEKKyAgICAgICAgb2JqLnkgPSAyCisg
ICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICBvYmouYSA9IDMKKyAgICAgICAgZWxzZSBp
ZiAoaSA9PSAxKQorICAgICAgICAgICAgb2JqLmIgPSAzCisgICAgICAgIGVsc2UgaWYgKGkgPT0g
MykKKyAgICAgICAgICAgIG9iai5jID0gMworICAgICAgICBkZWxldGUgb2JqLngKKyAgICAgICAg
YXNzZXJ0KChkZWxldGUgb2JqLngpICsgNSA9PSA2KQorICAgICAgICByZXR1cm4gb2JqLnkKKwor
ICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMTEpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9BbGxvYzExKGkgJSAzKSA9PSAyKQor
ICAgIH0KKyAgICBhc3NlcnQoZG9BbGxvYzExKDQpID09IDIpCit9Citub0lubGluZSh0ZXN0T2Jq
ZWN0U2lua2luZykKKworZnVuY3Rpb24gdGVzdFByb3h5KCkgeworICAgIGZ1bmN0aW9uIGRvQWxs
b2MxMigpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gMQorICAgICAg
ICBvYmouY291bnQgPSAwCisKKyAgICAgICAgY29uc3QgaGFuZGxlciA9IHsKKyAgICAgICAgICBk
ZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgICAgIGFzc2VydChwcm9wID09
ICJ6IikKKyAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQuegorICAgICAgICAgICAgKytvYmouY291
bnQKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9i
aiwgaGFuZGxlcikKKworICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMTIpCisKKyAgICBmdW5j
dGlvbiBkb0RlbGV0ZTEyKG9iaikgeworICAgICAgICBkZWxldGUgb2JqLnoKKyAgICB9CisgICAg
bm9JbmxpbmUoZG9EZWxldGUxMikKKworICAgIGxldCBmb28gPSBkb0FsbG9jMTIoKQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMTIoZm9v
KQorICAgIH0KKyAgICBhc3NlcnQoZm9vLmNvdW50ID0gMTAwMDAwMCkKK30KK25vSW5saW5lKHRl
c3RQcm94eSkKKworZnVuY3Rpb24gdGVzdFR5cGVkQXJyYXkoKSB7CisgICAgZnVuY3Rpb24gZG9E
ZWxldGUxMihvYmopIHsKKyAgICAgICAgb2JqLmNvbnN0cnVjdG9yID0gbnVsbAorICAgICAgICBh
c3NlcnQoZGVsZXRlIG9iai5jb25zdHJ1Y3RvcikKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxl
dGUxMikKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAg
IGRvRGVsZXRlMTIobmV3IFVpbnQ4QXJyYXkoKSkKKyAgICB9CisKKyAgICBsZXQgZm9vID0gbmV3
IFVpbnQ4QXJyYXkoMTIpOworICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoZm9vLmJ1ZmZlcikKKyAg
ICBkb0RlbGV0ZTEyKGZvbykKKyAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBmb29bMF0p
Cit9Citub0lubGluZSh0ZXN0VHlwZWRBcnJheSkKKworZnVuY3Rpb24gdGVzdE1pc3NNaXhlZCgp
IHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTEzKG9iaikgeworICAgICAgICByZXR1cm4gZGVsZXRl
IG9iai54CisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTMpCisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUxMyh7IHk6
IDQgfSkpCisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZm9vLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAg
ICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0ZTEzKGZv
bykpCisgICAgfQorfQorbm9JbmxpbmUodGVzdE1pc3NNaXhlZCkKKworZnVuY3Rpb24gdGVzdE1p
c3NOb25NaXhlZCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTE0KG9iaikgeworICAgICAgICBy
ZXR1cm4gZGVsZXRlIG9iai54CisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTQpCisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBsZXQgZm9vID0g
e30KKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAg
ICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0p
CisgICAgICAgIGFzc2VydCghZG9EZWxldGUxNChmb28pKQorCisgICAgICAgIGZvbyA9IHsgeTog
NCB9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4IiwgeworICAgICAgICAg
ICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MAorICAgICAgICB9
KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTQoZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0TWlzc05vbk1peGVkKQorCitmdW5jdGlvbiB0ZXN0QnlWYWwoKSB7CisgICAgZnVuY3Rpb24g
ZG9EZWxldGUxNShvYmopIHsKKyAgICAgICAgcmV0dXJuIGRlbGV0ZSBvYmpbIngiXQorICAgIH0K
KyAgICBub0lubGluZShkb0RlbGV0ZTE1KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDsgKytpKSB7CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTE1KHsgeTogNCB9KSkKKyAgICAgICAg
bGV0IGZvbyA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4Iiwgewor
ICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MQor
ICAgICAgICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTUoZm9vKSkKKworICAgICAgICBm
b28gPSB7IHg6IDQgfQorICAgICAgICBhc3NlcnQoZG9EZWxldGUxNShmb28pKQorICAgICAgICBh
c3NlcnQoZm9vLnggPT0gdW5kZWZpbmVkKQorICAgICAgICBnYygpCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdEJ5VmFsKQorCit0ZXN0QnlWYWwoKQordGVzdE1pc3NNaXhlZCgpCit0ZXN0TWlzc05v
bk1peGVkKCkKK3Rlc3RUeXBlZEFycmF5KCkKK3Rlc3RQcm94eSgpCit0ZXN0U2luZ2xlU3RydWN0
dXJlKCkKK3Rlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdEV4aXQoKQordGVzdFNpbmds
ZVN0cnVjdHVyZU1pc3MoKQordGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QoKQordGVzdFNp
bmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUoKQordGVzdFNpbmdsZVN0cnVjdHVyZUVt
cHR5KCkKK3Rlc3RQb2x5bW9ycGhpYygpCit0ZXN0UG9seXZhcmlhbnQoKQordGVzdENvbnN0YW50
Rm9sZGluZygpCit0ZXN0T2JqZWN0U2lua2luZygpCg==
</data>
<flag name="review"
          id="408954"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394131</attachid>
            <date>2020-03-20 14:41:13 -0700</date>
            <delta_ts>2020-04-03 14:06:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200320174112.patch</filename>
            <type>text/plain</type>
            <size>100298</size>
            <attacher name="Justin Michaud">justin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MzUzOTNkMDhlMTBjNmU2Y2FhNjdlODExMjczODMxNzYyYzRhOWRjLi42YzY3NGQ4NzM3YTcwNGMy
ODQ1OTQ4ZDdkZGQxYWRiMjZkYmRiZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFdoZW4g
d2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBzdHJ1
Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAgICAg
Y3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1cm5p
bmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMsCisg
ICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUgKG9y
IGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9naWMg
Zm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0eSB0
byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0aGUg
Y2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRlbGV0
ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBtaXNz
LCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKworICAg
ICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUgaWRl
bnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3Zl
cyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYgd2Ug
bmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFsc28g
Zml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1cyBv
ZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAgICAg
ICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2YgdGhp
cyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKworICAg
ICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlhbnQt
ZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3BlcnR5
LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0ZWNv
ZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZh
cmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJp
YW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1w
dFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3RydWN0
dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3Jl
Z2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0
ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6
b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om5l
d1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpyZXN1
bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2Zmc2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJvcGVydHlVbnNldCBjb25z
dCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBi
eXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpj
b21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6RGVsZXRl
QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzbG93VmVyc2lv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3Rh
dHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptYXJr
SWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01h
cC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAgICAo
SlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWNvcmRl
ZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3Rh
dHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6
bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoKKyAg
ICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFjaFZlY3Rvcik6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0ZUJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TXVsdGlEZWxldGVCeU9mZnNldERhdGE6Ondy
aXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Om11bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNo
ZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRp
ZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlIYXZl
SW5kZXhpbmdIZWFkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmNhbkNhY2hlRGVsZXRlSUMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTAzLTIwICBKYWNvYiBV
cGhvZmYgIDxqYWNvYl91cGhvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJl
dmVydGluZyByMjU4NzQ4LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNm
ZjIyNWUwNzFkOWViNGNjNDRlZGU4ZWE2ZTg1ZjQxYjViZTI3ZTguLjcxMzMwMDAyN2ViNTE1ZThl
YTMzZGU5ZTI3ZDYxODkwODNmZmQzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTUwMSw2ICs1MDEsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIGJ5dGVjb2RlL0NvZGVUeXBlLmgKICAgICBieXRlY29kZS9ERkdFeGl0
UHJvZmlsZS5oCiAgICAgYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCisgICAgYnl0ZWNvZGUvRGVsZXRl
QnlJZFZhcmlhbnQuaAorICAgIGJ5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKICAgICBieXRlY29k
ZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmgKICAgICBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCiAg
ICAgYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDllMGVlMWRlOWUzNDc4YzBkYTMyODUzY2YxNmJkMjI1NzJhYzJjMmIu
LjgwMzQ0MmJmMGJhMzBlMzNlYjA5ZDU5ZjhiNGUyODJkNWFmMDdlZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMTc4LDcgKzExNzgsOSBAQAogCQk3MEVDQTYwNjFBRkRCRUEy
MDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjAxMUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJB
QUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAq
LzsgfTsKKwkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzExRkEzMTI0
MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCAqLzsgfTsKIAkJNzM0QjY1NTUy
M0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8q
IERlbGV0ZVByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNBRDA2
MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi87IH07CiAJCTczRTM3OTk0
MjJFMEVGNjUwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1
IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggKi87IH07CiAJCTc1OTNDODk4QkU3MTRBNjRCRTkz
QTZFNyAvKiBXYXNtQ29udGV4dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0RCAvKiBXYXNtQ29udGV4
dElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMzk3Myw3ICszOTc1LDExIEBACiAJCTcwRUNBNjA0MUFGREJFQTIwMDQ0
OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQUFGN0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMxMjQw
REIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWxl
dGVCeUlkVmFyaWFudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MzExRkEzMzI0
MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGVsZXRlQnlJZFZhcmlhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MzE5MEQ5NjI0MDA5MzQ5MDBGODkxQzkgLyogRGVsZXRlQnlTdGF0dXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVsZXRlQnlTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZVByb3BlcnR5U2xvdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRl
QnlTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlTdGF0dXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzNFMzc5OTMyMkUwRUY0RjAwOTMzNTY1IC8qIEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlTG9v
cFN0cmVuZ3RoLmg7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5NTIyRTBFRjkxMDA5MzM1NjUgLyogQjNSZWR1Y2VM
b29wU3RyZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNS
ZWR1Y2VMb29wU3RyZW5ndGguY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VMb29wU3RyZW5ndGguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMg
LyogSlNNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
b2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyNDYsNiArODI1
MiwxMCBAQAogCQkJCTBGQzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJy
ZWRTb3VyY2VEdW1wLmNwcCAqLywKIAkJCQlGRTUwNjg2NDFBRTI0NjM5MDAwOURBQjcgLyogRGVm
ZXJyZWRTb3VyY2VEdW1wLmggKi8sCisJCQkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERl
bGV0ZUJ5SWRWYXJpYW50LmNwcCAqLywKKwkJCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyog
RGVsZXRlQnlJZFZhcmlhbnQuaCAqLywKKwkJCQk3MzE5MEQ5NjI0MDA5MzQ5MDBGODkxQzkgLyog
RGVsZXRlQnlTdGF0dXMuY3BwICovLAorCQkJCTczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBE
ZWxldGVCeVN0YXR1cy5oICovLAogCQkJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdF
eGl0UHJvZmlsZS5jcHAgKi8sCiAJCQkJMEZCQzBBRTUxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4
aXRQcm9maWxlLmggKi8sCiAJCQkJMEYyRUJCQUExREVERjk0RTAwOTkwMzY5IC8qIERpcmVjdEV2
YWxDb2RlQ2FjaGUuY3BwICovLApAQCAtOTIxOSw2ICs5MjI5LDggQEAKIAkJCQlGRTUwNjg2NTFB
RTI0NjM5MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NzNEQTRBNDc2NEM0NUZFODcxQjA0ODUgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkJCNzNCQjFERUY4NjQ1MDAyQzAwOUUgLyogRGVsZXRlQWxs
Q29kZUVmZm9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0OERC
IC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3M0FEMDYyOTIzRkY2
NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTczNEI2
NTU1MjNGNUMxMDQwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBEZXN0cnVjdGlvbk1vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3N0E0MjNFMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhl
YXAuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGM3YjYz
OGJjNDAxMWM5Y2Q0NGUxNjI5OTdlMDkzYzhlMDRlNDIwYTIuLmRhZjIyNWUxY2FjNzNjNTc4NWRh
YzYyZDBkZTVkZjliMDI5NTE2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIy
MCw2ICsyMjAsOCBAQCBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKIGJ5dGVjb2RlL0RhdGFG
b3JtYXQuY3BwCiBieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCiBieXRl
Y29kZS9EZWZlcnJlZFNvdXJjZUR1bXAuY3BwCitieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAK
K2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVD
YWNoZS5jcHAKIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2suY3BwCiBieXRlY29kZS9FeGVjdXRhYmxl
VG9Db2RlQmxvY2tFZGdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuY3BwCmluZGV4IDZkNTU4ZjQ4Zjg1ZWYzODU4NmJlOWJlOTQ2OWFjMzAxN2YzMWIy
YTYuLmQyNTBhZWJhOGI2MmE3NGViZWVmMDI0ZWUyYWYyMTNmYzg2OWE1NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTEyOSwxMCArMTI5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IEFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0
ZSgKICAgICBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RydWN0dXJl
ID09IG5ld1N0cnVjdHVyZS0+cHJldmlvdXNJRCh2bSkpOwotICAgIC8vIFdlIGRvIG5vdCBjYWNo
ZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLCBl
LmcuIFR5cGVkQXJyYXkgY2VsbHMgcmVxdWlyZSBhIGNoZWNrIGZvciBuZXV0ZXJpbmcgc3RhdHVz
LgotICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNvZGUgYmVsb3cuCi0gICAgaWYgKCFuZXdTdHJ1Y3R1
cmUtPmNhbkNhY2hlRGVsZXRlSUMoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNT
RVJUKCFuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgb2xkU3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nh
c2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQs
IG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsKIH0KIApAQCAtMTk1NCwxOCArMTk1MSw5IEBAIHZv
aWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUp
CiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2Vy
dmVkU3RhdGUgPQogICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJz
QnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6
Ok5vRXh0cmFTcGFjZSk7CiAKLSAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IG5ld1N0
cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdIZWFkZXIoKTsKLSAgICAgICAgLy8gV2UgZG8gbm90
IGNhY2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUg
anNjZWxsLgotICAgICAgICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQg
SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5LgotICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCkt
PmNhbkNhY2hlRGVsZXRlSUMoKSk7Ci0gICAgICAgIC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYg
d2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgot
ICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdT
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdIZWFkZXI7Ci0KICAgICAgICAgaml0Lm1vdmVWYWx1
ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CiAKLSAgICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1
cmVBbmRDbGVhckJ1dHRlcmZseSkgewotICAgICAgICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRT
dG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFzZUdQUik7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgIGlmIChp
c0lubGluZU9mZnNldChtX29mZnNldCkpIHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAog
ICAgICAgICAgICAgICAgIHZhbHVlUmVncywKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDc0MzY5NTM0ZTkwZWM3N2EzMTVkNWU5YzIwMDhmMmZjOWVjMTI0ZmUuLmZjZjZmYWE5
YzdmYWJlNTEyNDQ5YmE4NjRkMjU1ZjkwZGU4OWRjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTAwLDYgKzE1MDAsOCBAQCB2b2lkIENv
ZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0
dXNNYXAmIHJlc3VsdCkKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElD
U3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5wdXRTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNl
cy5pbnMpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygp
KS5pdGVyYXRvci0+dmFsdWUuaW5TdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVz
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRl
cmF0b3ItPnZhbHVlLmRlbGV0ZVN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICB9
CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWQ0MmJlOTljZDAwMDJhYjU1YTQ1
ZmMyODY5MjAwMmU4N2M2NmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitEZWxldGVCeUlkVmFyaWFu
dDo6RGVsZXRlQnlJZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29s
IHJlc3VsdCwKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAg
ICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVjdHVyZSkKKyAgICAsIG1fbmV3U3RydWN0dXJlKG5l
d1N0cnVjdHVyZSkKKyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihX
VEZNb3ZlKGlkZW50aWZpZXIpKQoreworICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUpOworICAgIGlm
IChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICBBU1NFUlQoIW5ld1N0cnVjdHVy
ZSk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKK30KKworRGVsZXRl
QnlJZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCgpIHsgfQorCitEZWxldGVCeUlkVmFyaWFu
dDo6RGVsZXRlQnlJZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQorewor
ICAgICp0aGlzID0gb3RoZXI7Cit9CisKK0RlbGV0ZUJ5SWRWYXJpYW50JiBEZWxldGVCeUlkVmFy
aWFudDo6b3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBt
X2lkZW50aWZpZXIgPSBvdGhlci5tX2lkZW50aWZpZXI7CisgICAgbV9yZXN1bHQgPSBvdGhlci5t
X3Jlc3VsdDsKKyAgICBtX29sZFN0cnVjdHVyZSA9IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAg
IG1fbmV3U3RydWN0dXJlID0gb3RoZXIubV9uZXdTdHJ1Y3R1cmU7CisgICAgbV9vZmZzZXQgPSBv
dGhlci5tX29mZnNldDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgRGVsZXRlQnlJZFZh
cmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sK
KyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3Jlc3VsdCAhPSBvdGhlci5tX3Jlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlm
aWVyICE9IG90aGVyLm1faWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChtX29mZnNldCAhPSBvdGhlci5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKG1fb2xkU3RydWN0dXJlICE9IG90aGVyLm1fb2xkU3RydWN0dXJlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJUKG1fbmV3U3RydWN0dXJlID09IG90aGVyLm1fbmV3
U3RydWN0dXJlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJp
YW50Ojp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFuZXdTdHJ1Y3R1
cmUoKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0
b3IpOworfQorCit2b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIG1fb2xkU3Ry
dWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisg
ICAgICAgIG1fbmV3U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKwordm9pZCBE
ZWxldGVCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1
bXBJbkNvbnRleHQob3V0LCAwKTsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6ZmluYWxp
emUoVk0mIHZtKQoreworICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChtX29sZFN0cnVjdHVyZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIXZtLmhl
YXAuaXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQo
UHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqKSBjb25zdAoreworICAgIG91dC5wcmludCgi
PCIpOworICAgIG91dC5wcmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwgIicsIHJlc3VsdD0iLCBt
X3Jlc3VsdCk7CisgICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAgICAgICBvdXQucHJpbnQoIiwg
IiwgKm1fb2xkU3RydWN0dXJlKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG91
dC5wcmludCgiIC0+ICIsICptX25ld1N0cnVjdHVyZSk7CisgICAgb3V0LnByaW50KCIsIG9mZnNl
dCA9ICIsIG9mZnNldCgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxl
dGVCeUlkVmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
SWRWYXJpYW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NzZiNjk3OWY2ZDljMjM2NWNjZTM1NDFmZTdhZmQx
YzEyMjBkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeUlkVmFyaWFudC5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNh
Y2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1
ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZz
ZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIERlbGV0ZUJ5
U3RhdHVzOworc3RydWN0IER1bXBDb250ZXh0OworCitjbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGVsZXRlQnlJZFZh
cmlhbnQoCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LAorICAgICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdXRyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0KTsKKworICAgIH5EZWxldGVCeUlkVmFyaWFudCgpOworCisgICAgRGVsZXRlQnlJ
ZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKyAgICBEZWxldGVCeUlkVmFyaWFu
dCYgb3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQor
ICAgIGJvb2wgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKyAgICBib29sIHdy
aXRlc1N0cnVjdHVyZXMoKSBjb25zdDsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisKKyAgICBib29sIGlzUHJvcGVydHlVbnNldCgpIGNv
bnN0IHsgcmV0dXJuIG9mZnNldCgpID09IGludmFsaWRPZmZzZXQ7IH0KKworICAgIGJvb2wgYXR0
ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQg
dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CisgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVt
cENvbnRleHQqKSBjb25zdDsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25z
dCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50
aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgaWYgKG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmll
ciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0
cnVjdHVyZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIERlbGV0ZUJ5U3Rh
dHVzOworCisgICAgYm9vbCBtX3Jlc3VsdDsKKyAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJl
OworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CisgICAgUHJvcGVydHlPZmZzZXQgbV9v
ZmZzZXQ7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVs
ZXRlQnlTdGF0dXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMjI5MjU5NDZjZjZkYjdjYzJhOTI1Nzk2YTJk
ZDFiZjRhNWNhOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIK
KyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRl
cklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTY29wZS5o
IgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiUG9s
eW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1
ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQg
eworY2xhc3MgR2V0dGVyU2V0dGVyOworfQorCitib29sIERlbGV0ZUJ5U3RhdHVzOjphcHBlbmRW
YXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBh
cHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9CisKK0RlbGV0ZUJ5
U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgs
IEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNl
bGluZUJsb2NrLT5tX2xvY2spOworCisgICAgRGVsZXRlQnlTdGF0dXMgcmVzdWx0OworCisjaWYg
RU5BQkxFKERGR19KSVQpCisgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2soCisgICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChD
b2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYg
RU5BQkxFKEpJVCkKK0RlbGV0ZUJ5U3RhdHVzOjpEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1bW1h
cnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAo
c3VtbWFyeSkgeworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAg
ICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
U3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2Vz
Q2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0Nh
bGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1f
c3RhdGUgPSBzdHViSW5mby50b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBM
aWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVz
Ojpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8pCit7CisgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHVi
SW5mbzo6c3VtbWFyeShibG9jay0+dm0oKSwgc3R1YkluZm8pOworICAgIGlmICghaXNJbmxpbmVh
YmxlKHN1bW1hcnkpKQorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoc3VtbWFyeSwgKnN0
dWJJbmZvKTsKKworICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0
ZSA9IFNpbXBsZTsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNh
c2UgQ2FjaGVUeXBlOjpVbnNldDoKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE5vSW5m
b3JtYXRpb24pOworCisgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1v
cnBoaWNBY2Nlc3MqIGxpc3QgPSBzdHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZvciAodW5z
aWduZWQgbGlzdEluZGV4ID0gMDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRl
eCkgeworICAgICAgICAgICAgY29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlz
dEluZGV4KTsKKyAgICAgICAgICAgIEFTU0VSVCghYWNjZXNzLnZpYVByb3h5KCkpOworCisgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50
eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAg
ICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CisgICAgICAg
ICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBh
Y2Nlc3MudHlwZSgpID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2UsIHN0
cnVjdHVyZSwgbnVsbHB0ciwgaW52YWxpZE9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFj
Y2Vzc0Nhc2U6OkRlbGV0ZTogeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5
KHN0cnVjdHVyZSwgYWNjZXNzLmlkZW50aWZpZXIoKS51aWQoKSwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERl
bGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0
KCkpOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2
YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCksIHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
LCBhY2Nlc3Mub2Zmc2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5k
VmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3Rh
dHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lv
bihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0
YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJ
bmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhp
dEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNv
ZGVJbmRleCk7CisKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRT
dGFjaykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdp
bik7CisKKyAgICAgICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJl
c3VsdCkgLT4gRGVsZXRlQnlTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lu
bGluZWQoY29kZU9yaWdpbikpIHsKKyAgICAgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNl
bGluZVJlc3VsdCA9IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAg
ICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGJhc2VsaW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRp
ZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9
OworCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5
U3RhdHVzIHJlc3VsdDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVG
ZWVkYmFjaygKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRD
b2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAg
ICAgIHJldHVybiBibGVzcygqc3RhdHVzLmRlbGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0
dXJuIGNvbXB1dGVGb3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNv
ZGVJbmRleCwgZGlkRXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVC
eVN0YXR1cyBEZWxldGVCeVN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChv
YnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZl
ZFRha2VzU2xvd1BhdGgpOworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Ns
b3dQYXRoKTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlT
dGF0dXMmIG90aGVyKQoreworICAgIGlmIChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAg
ICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisg
ICAgICAgICAgICAqdGhpcyA9IERlbGV0ZUJ5U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5
VGFrZXNTbG93UGF0aCk7CisgICAgfTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNh
c2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJu
OworCisgICAgY2FzZSBTaW1wbGU6CisgICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3Rh
dGUpCisgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRv
JiBvdGhlclZhcmlhbnQgOiBvdGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFw
cGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VT
bG93KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtl
c1Nsb3dQYXRoOgorICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1
cm4gbWVyZ2VTbG93KCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYg
c2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFu
dCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9s
ZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgp
KQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKworQ2FjaGVhYmxlSWRlbnRp
ZmllciBEZWxldGVCeVN0YXR1czo6c2luZ2xlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYg
KG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENh
Y2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0gbV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIo
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hl
YWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOwor
ICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKGlkZW50aWZpZXIgIT0gcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6
OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRl
QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVh
cChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKERlbGV0ZUJ5SWRWYXJpYW50JiB2
YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9y
KTsKK30KKworYm9vbCBEZWxldGVCeVN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGZv
ciAoYXV0byYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZp
bmFsaXplKHZtKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAg
ICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJT
aW1wbGUiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgor
ICAgICAgICBvdXQucHJpbnQoIkxpa2VseVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2Jz
ZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJp
bnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZTVhZDYwMmI2NTE3MGMxNDYwMjczN2RkN2NjODU1NzY5OGY1ZjcxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
U3RhdHVzLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVPcmln
aW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJ
ZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFw
LmgiCisjaW5jbHVkZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBBY2Nlc3NDYXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm87CisKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8v
IEl0J3MgdW5jYWNoZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZv
cm1hdGlvbiwKKyAgICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAg
ICAgICAgU2ltcGxlLAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBh
dGguCisgICAgICAgIExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVu
IHNlZW4gdG8gdGFrZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1Bh
dGgsCisgICAgfTsKKworICAgIERlbGV0ZUJ5U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5v
SW5mb3JtYXRpb24pCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVz
KFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBB
U1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0
dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNl
bGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdp
bik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAg
IGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0K
KyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9v
bCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRh
a2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2
YXJpYW50cygpIHsgcmV0dXJuIG1fdmFyaWFudHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVy
IHNpbmdsZUlkZW50aWZpZXIoKSBjb25zdDsKKworICAgIERlbGV0ZUJ5U3RhdHVzIHNsb3dWZXJz
aW9uKCkgY29uc3Q7CisKKyAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJp
YW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGlt
YXRlLgorICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2
aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlh
bnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0dWJJ
bmZvU3VtbWFyeSwgU3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IERl
bGV0ZUJ5U3RhdHVzJik7CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvckJh
c2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcp
OworI2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7
CisjZW5kaWYKKworICAgIFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsK
KyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCmluZGV4IGRiZDVhODgyMzEyNDIy
ZDRlOGIyZWRkM2I3OTgyMmM3NjdhN2JiYzguLmYwMzE5MDExNWEzYjhlNDJiNGViOGI4NzQwM2Fm
MmQ4NGUwMzc0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
Q1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1
c01hcC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEdldEJ5U3Rh
dHVzOwogY2xhc3MgSW5CeUlkU3RhdHVzOwogY2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIERl
bGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiBzdHJ1Y3QgQnlWYWxJbmZv
OwogCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgR2V0QnlTdGF0dXMq
IGdldFN0YXR1cyB7IG51bGxwdHIgfTsKICAgICBJbkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVs
bHB0ciB9OwogICAgIFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBE
ZWxldGVCeVN0YXR1cyogZGVsZXRlU3RhdHVzIHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBI
YXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJ
Q1N0YXR1c01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNv
cmRlZFN0YXR1c2VzLmNwcAppbmRleCBjOTQ4NGI0ODVhZGZlNmRhYjRjY2YyYjdhYTY0NWJmNzg4
OTgwODMyLi5kNjE1YTEzZDljM2M0NzVhNjE2YzJlNTQ3NzI5NTU0NjE2OWM0NDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3Bw
CkBAIC0zNCw2ICszNCw3IEBAIFJlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9w
ZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAgICAgZ2V0cyA9IFdURk1vdmUob3Ro
ZXIuZ2V0cyk7CiAgICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RG
TW92ZShvdGhlci5pbnMpOworICAgIGRlbGV0ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwog
ICAgIHNocmlua1RvRml0KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNzUsMTAgKzc2LDIw
IEBAIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVs
ZXRlQnlTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IERlbGV0ZUJ5U3RhdHVzJiBzdGF0dXMpCit7Cisg
ICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPERlbGV0ZUJ5U3RhdHVzPihzdGF0dXMpOwor
ICAgIERlbGV0ZUJ5U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgZGVsZXRl
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFn
Z3JlZ2F0ZShTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWly
IDogZ2V0cykKICAgICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9y
KTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+
dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKQEAgLTg5LDYgKzEwMCw4IEBA
IHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNp
dG9yKQogICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAg
IGZvciAoYXV0byYgcGFpciA6IGlucykKICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFw
KHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBw
YWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVk
U3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCmluZGV4IGIzNTVlOWI2
MjMzODQ2MjkyNjQ4MmM3YzFiOTFmNDIxZmZlNjIwZDAuLjllNzA1NWQyNDNmMjRhYTZhZjVhYTA5
MmFkMzAyZWYxNWE4ZDA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgi
CiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNp
bmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBSZWNvcmRl
ZFN0YXR1c2VzIHsKICAgICBHZXRCeVN0YXR1cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9y
aWdpbiYsIGNvbnN0IEdldEJ5U3RhdHVzJik7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJ
ZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIElu
QnlJZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5
SWRTdGF0dXMmKTsKKyAgICBEZWxldGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3Qg
Q29kZU9yaWdpbiYsIGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CiAgICAgCiAgICAgdm9pZCB2aXNp
dEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOwogICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImKTsKQEAgLTYzLDEyICs2NSwxNCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAg
ICAgIGZ1bmMoZ2V0cyk7CiAgICAgICAgIGZ1bmMocHV0cyk7CiAgICAgICAgIGZ1bmMoaW5zKTsK
KyAgICAgICAgZnVuYyhkZWxldGVzKTsKICAgICB9CiAgICAgCiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0
dXM+Pj4gZ2V0czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxQdXRCeUlkU3RhdHVzPj4+IHB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8SW5CeUlkU3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3Rk
OjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBkZWxl
dGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZTk1
ODAwYWZmMjY3OTVhNDJkOTQ2Mzk0Y2JkZTUzMDk2ODhjZGM0Ni4uMjFmMDAzYTE5MGU1Y2NiYmRm
YTA2ODQ1YzA2ZWM2MjE1Nzc2YTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzcwOSw2ICsz
NzA5LDQxIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBtX3N0YXRlLnNl
dElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE11bHRp
RGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7
CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisKKyAgICAgICAgLy8gT3Jk
aW5hcmlseSB5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggY2FsbGluZyBzZXRTaG91bGRUcnlD
b25zdGFudEZvbGRpbmcoKQorICAgICAgICAvLyBiZWNhdXNlIG9mIHRoZSBlZmZlY3Qgb24gY29t
cGlsZSB0aW1lcywgYnV0IHRoaXMgbm9kZSBpcyBGVEwtb25seS4KKyAgICAgICAgbV9zdGF0ZS5z
ZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1
ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgaWYgKG5vZGUtPm11
bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkud3JpdGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAg
ZGlkRm9sZENsb2JiZXJTdHJ1Y3R1cmVzKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVs
dGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9ICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHRoaXNTZXQuZmlsdGVyKGJhc2UpOworICAg
ICAgICAgICAgaWYgKHRoaXNTZXQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFu
c2l0aW9ucy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24obV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbmV3U3RydWN0dXJlKSk7
CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKHRoaXNTZXQpOworICAgICAgICB9
CisKKyAgICAgICAgb2JzZXJ2ZVRyYW5zaXRpb25zKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbnMp
OworICAgICAgICBpZiAoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY2hhbmdlU3RydWN0dXJlKG1f
Z3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS52YWx1ZSgpOwpAQCAtNDEwNiw2ICs0MTQxLDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xv
YmJlckxpbWkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJl
YWs7CiAKQEAgLTQyODcsNiArNDMyMywxMyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgIEFi
c3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlm
ICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+ZGVsZXRl
QnlTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmlu
ZGV4IDUzYjAxNDgzZWQ0MTQ5MDg0ODc1MWRkYjMzNjlkMjE2YmNiNWQ1YzguLmJlNjcxMjFjZTMx
Mzg1ZGZkOTVlN2RiNDE4OWJkOGNjZjc4OTg4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAt
NDA3LDYgKzQwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgpAQCAtMTI2Niw3ICsxMjY3
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgog
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAg
ICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOiB7CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6
CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogewogICAgICAgICAg
ICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGU2ZDViNjVhNGQwMTE2YzY4NmFlMDZlMTE4Y2Q3
ZmNhOTM3NjcxY2YuLmNkNzY2OTQ3OTRiNjM2Yjk5Y2E5MGM2OGY5YmE0YjJmMGUyM2IwM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNs
dWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJEZWxl
dGVCeVN0YXR1cy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
R2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTI0OSw2ICsyNTAs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFz
ZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRT
dGF0dXMmLAogICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSk7
CisKKyAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBk
ZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRl
QnlTdGF0dXMpOwogICAgIAogICAgIC8vIEVpdGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3Ig
ZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRpdGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAg
ICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhvbGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFi
bGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBAIC00NjE0LDYgKzQ2MTgsMTA0IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGdldHRlciwgbnVtYmVyT2ZQYXJh
bWV0ZXJzIC0gMSwgcmVnaXN0ZXJPZmZzZXQsICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIHBy
ZWRpY3Rpb24pOwogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAor
ICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciwKKyAgICBEZWxldGVCeVN0YXR1cyBkZWxldGVCeVN0YXR1cykKK3sKKyAg
ICBpZiAoIWRlbGV0ZUJ5U3RhdHVzLmlzU2ltcGxlKCkgfHwgIWRlbGV0ZUJ5U3RhdHVzLnZhcmlh
bnRzKCkuc2l6ZSgpIHx8ICFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAg
IHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJ
bmZvKGlkZW50aWZpZXJOdW1iZXIpLCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPiAxKSB7CisgICAgICAg
IGlmICghbV9ncmFwaC5tX3BsYW4uaXNGVEwoKQorICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVz
ZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgZGVsZXRlQnlTdGF0
dXMudmFyaWFudHMoKS5zaXplKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoRGVsZXRlQnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBi
YXNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhZGRUb0dy
YXBoKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5
U3RhdHVzKSksIGJhc2UpOworCisgICAgICAgIGJvb2wgaGFzSGl0ID0gZmFsc2U7CisgICAgICAg
IGJvb2wgaGFzTWlzcyA9IGZhbHNlOworICAgICAgICBib29sIGhhc01pc3NOb25jb25maWd1cmFi
bGUgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJp
YW50IDogZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgbV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlm
ICh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBo
YXNIaXQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICh2YXJpYW50LnJlc3VsdCgpKQor
ICAgICAgICAgICAgICAgIGhhc01pc3MgPSB0cnVlOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGhhc01pc3NOb25jb25maWd1cmFibGUgPSB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFoYXNIaXQpIHsKKyAgICAgICAgICAgIGlmICgoaGFzTWlzcyAmJiAhaGFzTWlz
c05vbmNvbmZpZ3VyYWJsZSkgfHwgKCFoYXNNaXNzICYmIGhhc01pc3NOb25jb25maWd1cmFibGUp
KSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IGJhc2VTZXQ7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogZGVsZXRlQnlTdGF0
dXMudmFyaWFudHMoKSkKKyAgICAgICAgICAgICAgICAgICAgYmFzZVNldC5hZGQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSk7CisKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0
dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoYmFzZVNldCkpLCBiYXNlKTsKKyAg
ICAgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sIGpzQ29uc3RhbnQoanNCb29sZWFuKGRlbGV0
ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF0ucmVzdWx0KCkpKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgTXVsdGlEZWxldGVCeU9m
ZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlEZWxldGVCeU9mZnNldERhdGEuYWRkKCk7
CisgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKTsKKyAg
ICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisgICAgICAg
IHNldChkZXN0aW5hdGlvbiwKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlEZWxldGVCeU9m
ZnNldCwgT3BJbmZvKGRhdGEpLCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBBU1NFUlQoZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXplKCkgPT0gMSk7CisgICAgRGVs
ZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRlbGV0ZUJ5U3RhdHVzLnZhcmlhbnRzKClbMF07CisK
KyAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChG
aWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1
cykpLCBiYXNlKTsKKyAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7Cisg
ICAgICAgIHNldChkZXN0aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4odmFyaWFudC5yZXN1
bHQoKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVy
RGVsZXRlQnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCku
YWRkRGVsZXRlQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwg
YmFzZSk7CisgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRk
U3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CisgICAgQVNTRVJU
KHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbklu
dmFsaWRhdGVkKCkpOworICAgIEFTU0VSVCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICBB
U1NFUlQoaXNWYWxpZE9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSk7CisKKyAgICBOb2RlKiBwcm9w
ZXJ0eVN0b3JhZ2U7CisgICAgVHJhbnNpdGlvbiogdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFu
c2l0aW9ucy5hZGQoCisgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSkpOworCisgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQor
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNlOworICAgIGVsc2UKKyAgICAgICAgcHJvcGVy
dHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRCdXR0ZXJmbHksIGJhc2UpOworCisgICAgU3RvcmFn
ZUFjY2Vzc0RhdGEqIGRhdGEgPSBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7Cisg
ICAgZGF0YS0+b2Zmc2V0ID0gdmFyaWFudC5vZmZzZXQoKTsKKyAgICBkYXRhLT5pZGVudGlmaWVy
TnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKworICAgIGFkZFRvR3JhcGgoCisgICAgICAgIFB1
dEJ5T2Zmc2V0LAorICAgICAgICBPcEluZm8oZGF0YSksCisgICAgICAgIHByb3BlcnR5U3RvcmFn
ZSwKKyAgICAgICAgYmFzZSwKKyAgICAgICAganNDb25zdGFudChKU1ZhbHVlKCkpKTsKKworICAg
IGFkZFRvR3JhcGgoUHV0U3RydWN0dXJlLCBPcEluZm8odHJhbnNpdGlvbiksIGJhc2UpOworICAg
IHNldChkZXN0aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkp
KTsKKyAgICByZXR1cm47Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAog
ICAgIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIE5vZGUqIHZhbHVlLCBj
b25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0KQogewpAQCAt
NTk0NCwxNSArNjA0Niw0OSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BEZWxCeUlkPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29k
ZS5tX2Jhc2UpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5s
aW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5m
byhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSkpOworICAgICAgICAgICAgRGVsZXRlQnlTdGF0dXMg
ZGVsZXRlQnlTdGF0dXMgPSBEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKKyAgICAg
ICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGhhbmRsZURlbGV0
ZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3Rh
dHVzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgICAgICAgICBO
b2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7Ci0gICAgICAgICAgICBOb2RlKiBrZXkg
PSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9k
c3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIGtleSkpOworICAgICAgICAgICAgTm9k
ZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29s
IHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSBmYWxzZTsKKyAgICAgICAgICAgIERlbGV0ZUJ5
U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAwOworCisgICAgICAgICAgICBpZiAoIW1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElk
ZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAgICAgICAgICAgICAgICYm
ICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRDZWxsKSkgeworCisgICAgICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IGRlbGV0ZUJ5U3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAg
ICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQo
KTsKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRp
ZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpZGVudGlmaWVyLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBGcm96ZW5W
YWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRpZmllci5jZWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2xDZWxsKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhm
cm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwg
cHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkQ29t
cGlsZUFzRGVsZXRlQnlJZCkKKyAgICAgICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlkKGJ5dGVj
b2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxldGVCeVN0YXR1cyk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dy
YXBoKERlbGV0ZUJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfZGVsX2J5X3ZhbCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAppbmRleCA1YjM0ZWM1YmQ4NTI0YzAzYjM5YTFiMzNiYTJiMmY2NGIz
ZjU2M2UxLi5lZGExNDFhNjkyMjIwOWM0YTcxYWUzOGRiNmU1ZmJkYjdiNWNhNzQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtNDczLDYgKzQ3Myw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6
CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRl
KTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTEyODQsNiArMTI4NSwxNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYg
cmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVy
dHlMb2MsIGhlYXAsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9k
ZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlP
ZmZzZXQ6IHsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICByZWFk
KEpTT2JqZWN0X2J1dHRlcmZseSk7CisgICAgICAgIEFic3RyYWN0SGVhcCBoZWFwKE5hbWVkUHJv
cGVydGllcywgbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS5pZGVudGlmaWVyTnVtYmVy
KTsKKyAgICAgICAgd3JpdGUoaGVhcCk7CisgICAgICAgIGlmIChub2RlLT5tdWx0aURlbGV0ZUJ5
T2Zmc2V0RGF0YSgpLndyaXRlc1N0cnVjdHVyZXMoKSkKKyAgICAgICAgICAgIHdyaXRlKEpTQ2Vs
bF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxv
YywgaGVhcCwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShncmFwaC5mcmVlemVTdHJvbmcoSlNW
YWx1ZSgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1
dEJ5T2Zmc2V0OiB7CiAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBub2RlLT5z
dG9yYWdlQWNjZXNzRGF0YSgpLmlkZW50aWZpZXJOdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IGVlOThmYWMyMzA1
MzQ5OTMwNTk0OGE3YzQwMmRmMzhkMmJmMDZkZWIuLmYxNzQ1ZWNhYTAxNWE5NmRlYmYwZGMxYTli
YWE5MjgxMjFkMzk2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04Niw2ICs4Niw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0
U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNl
IGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1h
eSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRo
YXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8g
dGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IGI0M2Y3Y2Y1NGUxMjE3NDcx
NzZkZGNlOTY1YjZjODE4ZjI5MTYxODUuLjM4NmRiOTFjOGRhYTVhYzE0YTU5ZGI0YzZjOTYxNDI2
OGUwOTcyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC01MDksNiArNTA5LDM2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogeworICAg
ICAgICAgICAgICAgIEVkZ2UgYmFzZUVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gYmFzZUVkZ2Uubm9kZSgpOworICAgICAgICAgICAgICAgIE11bHRp
RGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEo
KTsKKworICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5m
b3JOb2RlKGJhc2UpOworCisgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGlu
ZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUg
c3RhdGUgYmVmb3JlLgorICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8g
RG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0
aGlzLgorCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFy
aWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlh
bnQmIHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworCisgICAgICAgICAgICAgICAgICAgIGlm
ICghYmFzZVZhbHVlLmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRz
W2ktLV0gPSBkYXRhLnZhcmlhbnRzLmxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGEudmFyaWFudHMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkYXRh
LnZhcmlhbnRzLnNpemUoKSAhPSAxKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGVtaXREZWxldGVCeU9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIGRhdGEudmFyaWFudHNbMF0sIGRhdGEuaWRlbnRp
Zmllck51bWJlcik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7CiAgICAgICAgICAgICAgICAgRWRnZSBiYXNlRWRnZSA9
IG5vZGUtPmNoaWxkMSgpOwpAQCAtMTMwOCw2ICsxMzM4LDQ1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgY2hpbGRFZGdlKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgZW1pdERl
bGV0ZUJ5T2Zmc2V0KHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwgY29uc3QgQWJz
dHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCwg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKKyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3Jp
Z2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9y
aWdpbi5leGl0T0spOworICAgICAgICBhZGRCYXNlQ2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLCBi
YXNlVmFsdWUsIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KSkpOworICAgICAgICBub2RlLT5jaGlsZDEoKS5zZXRVc2VLaW5kKEtub3duQ2VsbFVzZSk7CisK
KyAgICAgICAgaWYgKCF2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICBtX2dy
YXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSk7
CisgICAgICAgICAgICBub2RlLT5vcmlnaW4gPSBub2RlLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBUcmFuc2l0aW9u
KiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAgIEVk
Z2UgcHJvcGVydHlTdG9yYWdlOworCisgICAgICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50
Lm9mZnNldCgpKSkKKyAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSA9IG5vZGUtPmNoaWxkMSgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBFZGdlKG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIG5vZGUtPmNoaWxkMSgpKSk7CisKKyAgICAgICAg
U3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEgPSAqbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFk
ZCgpOworICAgICAgICBkYXRhLm9mZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRh
dGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7CisKKyAgICAgICAgTm9kZSog
Y2xlYXJWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgSlNDb25zdGFudCwgb3JpZ2luLCBPcEluZm8obV9ncmFwaC5mcmVlemVTdHJvbmcoSlNW
YWx1ZSgpKSkpOworICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAg
ICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUHV0QnlPZmZzZXQsIG9yaWdpbiwgT3BJbmZvKCZk
YXRhKSwgcHJvcGVydHlTdG9yYWdlLCBub2RlLT5jaGlsZDEoKSwgRWRnZShjbGVhclZhbHVlKSk7
CisgICAgICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIFB1dFN0cnVjdHVyZSwgb3JpZ2luLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAg
ICBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9k
ZSwganNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKTsKKyAgICAgICAgbm9kZS0+b3JpZ2luID0g
b3JpZ2luOworICAgIH0KICAgICAKICAgICB2b2lkIGFkZEJhc2VDaGVjaygKICAgICAgICAgdW5z
aWduZWQgaW5kZXhJbkJsb2NrLCBOb2RlKiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNl
VmFsdWUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjZjhmYTJlZmJhMzdmOTZkYzkwOTlkNDk3MjUx
ODEuLjkyYzAzOGYwNTkwMmVlOGMzMTBjNWExMTNkNjQ5NWQwNTA1MTBjZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CiAg
ICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0Ogor
ICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNh
c2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBAIC0yNDUsNiArMjQ2LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5C
eUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBEYXRl
R2V0SW50MzJPck5hTjoKICAgICBjYXNlIERhdGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdH
ZXRJbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRl
eCBlOTdkZTEwZjZmNGNkYzE1YmFlZmIxMGI3ZWM2MDYyODI3ODM1OTU1Li4xNDJkNzhiOGM0MzY4
MWZjMzNmZmYzMGI2ZTliOGQyOGRiODk5ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE4MTUsNiArMTgxNSwxMSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogIHsK
KyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE1hdGNoU3Ry
dWN0dXJlOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSW50cm9kdWNlIGEgdmFyaWFudCBvZiBN
YXRjaFN0cnVjdHVyZSB0aGF0IGRvZXNuJ3QgZG8gYSBjZWxsIGNoZWNrLgpAQCAtMjU4MCw2ICsy
NTg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBJ
bnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAK
aW5kZXggNjllMjkwMGFlZGQ2OWQyNDU1ZjI1MTQzMzJmY2Q5NDU3NThlMWIwZi4uYWYyODI2NzNl
NDVjMjcxZWY4NTNkOWMyMmViZjlhYTcxNjNlNWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKQEAgLTMwMiw2ICszMDIsMTIgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250
ZXgKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLnZhcmlh
bnRzW2ldLCBjb250ZXh0KSk7CiAgICAgfQorICAgIGlmIChub2RlLT5oYXNNdWx0aURlbGV0ZUJ5
T2Zmc2V0RGF0YSgpKSB7CisgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0g
bm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAiaWQiLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsICJ7IiwgaWRlbnRpZmllcnMoKVtkYXRhLmlk
ZW50aWZpZXJOdW1iZXJdLCAifSIpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
aW5Db250ZXh0KGRhdGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKKyAgICB9CiAgICAgaWYgKG5v
ZGUtPmhhc01hdGNoU3RydWN0dXJlRGF0YSgpKSB7CiAgICAgICAgIGZvciAoTWF0Y2hTdHJ1Y3R1
cmVWYXJpYW50JiB2YXJpYW50IDogbm9kZS0+bWF0Y2hTdHJ1Y3R1cmVEYXRhKCkudmFyaWFudHMp
CiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqdmFyaWFudC5zdHJ1Y3R1
cmUuZ2V0KCksIGNvbnRleHQpLCAiPT4iLCB2YXJpYW50LnJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggOTQ3ZWZhYWJhOWU2NDk2YjNiMDVjNmY1NTE0MmFiN2M3
N2I1YjVhMi4uMmMyNTE5NmZiMDVjNDk3Nzk0YjVkZGZjNjYxZGM3N2ZmMWEwZTBhYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTEwMCw2ICsxMTAwLDcgQEAgcHVibGlj
OgogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlP
ZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zm
c2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKKyAgICBCYWc8TXVsdGlEZWxldGVCeU9m
ZnNldERhdGE+IG1fbXVsdGlEZWxldGVCeU9mZnNldERhdGE7CiAgICAgQmFnPE1hdGNoU3RydWN0
dXJlRGF0YT4gbV9tYXRjaFN0cnVjdHVyZURhdGE7CiAgICAgQmFnPE9iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE+IG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTsKICAgICBCYWc8Q2FsbFZhcmFy
Z3NEYXRhPiBtX2NhbGxWYXJhcmdzRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxNTUzYjE5YWY1MTM0NDJjMDNlYmVlYzA0ODBmMmIu
LjFjY2E4YjJhYzQxY2JlN2Y0OTZkM2M5NmE3YjhkZDEwMDAyZDU4OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTA5LDYgKzEwOSw3IEBAIEV4aXRNb2Rl
IG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkK
ICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZGNiMmI1OWRjYWNiYjIxOTNhODJhMGI5NzMzMzk5
ZjA1NzQyYTQzOC4uZjczYWY2MDAxMWMxNTAxZDA4MGIxZWUwNmJjN2IwYWE2NWMzNmQxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCkBAIC01Nyw2ICs1NywxNSBAQCBib29s
IE11bHRpUHV0QnlPZmZzZXREYXRhOjpyZWFsbG9jYXRlc1N0b3JhZ2UoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YTo6d3JpdGVzU3Ry
dWN0dXJlcygpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gdmFyaWFudHMuc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgIGlmICh2YXJpYW50c1tpXS53cml0ZXNTdHJ1Y3R1cmVzKCkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2
b2lkIEJyYW5jaFRhcmdldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlm
ICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEzNDU1YjVjMjlm
MDcwZmVmMmY5OTE5NTJiY2ZmMDA3ZmVhOTE3MjYuLjA5ODZmOWE3MWZjYzE3OTg3NTdmNGFlZWRk
OWFiNDYyOTFjOGY0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC00Nyw2
ICs0Nyw3IEBACiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtp
bmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKKyNpbmNsdWRlICJEZWxl
dGVCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCkBAIC05Miw2ICs5MywxMyBAQCBz
dHJ1Y3QgTXVsdGlQdXRCeU9mZnNldERhdGEgewogICAgIGJvb2wgcmVhbGxvY2F0ZXNTdG9yYWdl
KCkgY29uc3Q7CiB9OwogCitzdHJ1Y3QgTXVsdGlEZWxldGVCeU9mZnNldERhdGEgeworICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXI7CisgICAgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAy
PiB2YXJpYW50czsKKworICAgIGJvb2wgd3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OworfTsKKwog
c3RydWN0IE1hdGNoU3RydWN0dXJlVmFyaWFudCB7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmU7CiAgICAgYm9vbCByZXN1bHQ7CkBAIC0yMDE0LDYgKzIwMjIsMTcgQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQoaGFzTXVsdGlQdXRCeU9mZnNldERhdGEoKSk7CiAgICAgICAgIHJl
dHVybiAqbV9vcEluZm8uYXM8TXVsdGlQdXRCeU9mZnNldERhdGEqPigpOwogICAgIH0KKworICAg
IGJvb2wgaGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gTXVsdGlEZWxldGVCeU9mZnNldDsKKyAgICB9CisKKyAgICBNdWx0aURlbGV0ZUJ5
T2Zmc2V0RGF0YSYgbXVsdGlEZWxldGVCeU9mZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGhhc011bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkpOworICAgICAgICByZXR1cm4gKm1fb3BJ
bmZvLmFzPE11bHRpRGVsZXRlQnlPZmZzZXREYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9v
bCBoYXNNYXRjaFN0cnVjdHVyZURhdGEoKQogICAgIHsKQEAgLTI5NzYsNiArMjk5NSwxNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKICAg
ICB9CiAKKyAgICBib29sIGhhc0RlbGV0ZUJ5U3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBvcCgpID09IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOworICAgIH0KKworICAgIERlbGV0ZUJ5U3Rh
dHVzKiBkZWxldGVCeVN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzRGVsZXRlQnlT
dGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxEZWxldGVCeVN0YXR1cyo+KCk7
CisgICAgfQorCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRTdHJlYW0mIG91dCkKICAgICB7
CiAgICAgICAgIGlmICghY2hpbGQxKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKaW5kZXggZTIxMWVhNzdkODU0MTk5YmI4NDYzZmFlYzM3YmY1YzQxYzVmOTdlNy4uZDEz
NjcwMWU3Yjc2NmY0NjgwMzM5YjAxNTE2ZmYwZmQxZTBjNDc3MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjUyLDYgKzI1Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aUdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlPZmZzZXQsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIp
IFwKICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1h
Y3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKQEAgLTUyNiw2
ICs1MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmls
dGVyR2V0QnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5
SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3Rh
dHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyRGVsZXRlQnlTdGF0dXMs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwKICAgICBt
YWNybyhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgLyog
VGhlIGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBiZWNhdXNlIHRoZXkgZG8gYm91bmRz
IGNoZWNrcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDA1
YWNkZjIzODc2OTczZjg4ZTgyYjlhNzNiMzQ5ZWU3NzliNWI5ODQuLmQwMGVhNjFlYTI5NWQxNjcw
M2Y1NjY1NjhmYWU5OTcxNjUxYTExOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAt
MTIyMCw2ICsxMjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNTcwLDYgKzI1NzEsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9t
QWxsb2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91
dENoZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uOGYxOTI2
MDgwNTY2OTQ3YmFiYTAyZjE3NzZiNTQwOTRiMTBlMGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTk4NCw2ICs5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RGVsZXRlQnlWYWw6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBNdWx0
aURlbGV0ZUJ5T2Zmc2V0OgogICAgICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgICAgIGNhc2Ug
Q29tcGFyZUxlc3M6CiAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKQEAgLTEzOTUsNiArMTM5
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgQ2xl
YXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBEYXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJ
bnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRlNjAxYTBjN2ZjOTY2NGI1NWVhYy4u
ZDZlN2M5ZTMwODU3MjI0YzgyNTg1NjgyY2FiNmQwN2FlN2QxZTE2YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgor
ICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQg
dGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhhbiB3aGVyZSB3ZSBwdXQgdGhlbSwg
c2luY2Ugd2Ugd2FudCB0aGVtCiAgICAgICAgIC8vIHRvIGNhcHR1cmUgInByb2ZpbGluZyIgYXQg
dGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1c2VyIHB1dCB0aGVtLgogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MDgsNiArNjA5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGln
bm8KICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoK
ICAgICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6CiAgICAgY2FzZSBIYXNHZW5lcmljUHJvcGVy
dHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGU2MTUxNTE3
NTA0Y2IyNTdlZTNiNTgyMzhmZmE4MmRhYjcyOTg2ODQuLmYxMTE0ZjFkYjhkYzkwYzljODRkNTU4
ZDAxOTg3ZWQzZDA3ZmQyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDE5MCw2ICs0MTkwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5C
eUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTQyMDgsNiArNDIwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRp
R2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlE
ZWxldGVCeU9mZnNldDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZh
bHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM4YzE3ZjJhZmQzM2EwYjQy
ZmVmNjQ1YWJmM2FiZjA2YmM1OTZkNDcuLjkwNzk1YWQ2ZDk4MDhmYjg2YTJkYmZjMGYzNTY1NGFl
MTdlMWE4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcApAQCAtNTI1NSw2ICs1MjU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVy
SUNTdGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsK
QEAgLTUyNjksNiArNTI3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAg
ICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoK
ICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJv
dHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlw
ZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggN2M3YWJlODNlMjNhNWQ4OGEzMjA4M2E1MGVk
ZjM0ZDM2Y2Q2MzY5Yi4uOTJkMGM4ZjFjNDU2MzczOTBjMDYzNGE4MTU4MjQyODVlOTdhM2ViMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCkBAIC0yODcsNiArMjg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgogICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICAgICAgICAgICAg
ICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0
IGNvdW50IHRoZXNlIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAKQEAgLTM2Miw2ICszNjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAg
ICAgICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgICAgICAgICAgICAgIGNh
c2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291
bnQgdGhlc2UgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAz
YTc3NzExNDVjNzYwYjM0ODJlN2UxYWM5YjY0OTkwMWRmZjE5ZDVhLi4wZDY1ZDhmODlhZWMzZDU5
NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcApAQCAtMzExLDYgKzMxMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5z
aXRpb24oKS0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5
T2Zmc2V0OgorICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0
aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5t
dWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSB8fCAhdmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKS0+ZGZnU2hvdWxkV2F0Y2goKSk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBUaGlzIG9ubHkgc3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0Zp
bmFsT2JqZWN0IG9yIEpTQXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCA3NGVhNjE4ZTkwMTEyOWE1
N2UyYzgzYmI4OTJhNzViN2I4MDYzM2I3Li4wYzM1YTUzNjVjYzQ2ZWYzYzc4OTk0OGY0ZDJlNjBj
Y2YwMTc2Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFy
Z3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBHZXRCeU9mZnNldDogewpAQCAtMzk5LDYgKzQw
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBG
aWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVz
OgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS5ub2RlKCkgPT0gY2FuZGlkYXRl
KQogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKaW5kZXggNWM2OWQxZDM4YzFjNjEwNTk5ZmQzMDI5OTczNDM2MGNiMjI3YWNiMi4uZTFm
NTg5ZjI3MzQzYmZmOTM2MjE2MTg4ZGFlM2I1Yzg2MzY4NjhiYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjMzLDYgKzIzMyw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVG9U
aGlzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZz
ZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVG9QcmltaXRpdmU6
CiAgICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2UgVGhyb3c6CkBAIC0zOTIsNiArMzkz
LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1
czoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNh
c2UgQ3JlYXRlR2VuZXJhdG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IGU3NDdlZGZkYjlkNzhhNGZhOWI4OTZmNDQ4NTJhYzQ5NTU1MTIw
YTQuLjA1YWM1Y2Y1MzFlOTVmNDc5ODJlNDg5NjNmMmE5NDBmODYyMTkzZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTExNzcsNiArMTE3
Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICAgICAg
ICAgIGNvbXBpbGVNdWx0aVB1dEJ5T2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgorICAgICAgICAgICAgY29tcGlsZU11bHRpRGVs
ZXRlQnlPZmZzZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1hdGNoU3Ry
dWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZU1hdGNoU3RydWN0dXJlKCk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE1NjksNiArMTU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmls
dGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgICAgICBjb21waWxlRmlsdGVySUNTdGF0dXMoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIERhdGVHZXRJbnQzMk9yTmFOOgpAQCAtODEyNiw2ICs4MTMw
LDEwNiBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlTXVsdGlEZWxldGVC
eU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbV9ub2Rl
LT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpOworCisgICAgICAgIHVuc2lnbmVkIG1pc3NDb25m
aWd1cmFibGUgPSAwOworICAgICAgICB1bnNpZ25lZCBtaXNzTm9uY29uZmlndXJhYmxlID0gMDsK
KworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKTsgaS0tOykg
eworICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFudHNb
aV07CisgICAgICAgICAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmFyaWFudC5yZXN1bHQoKSkKKyAgICAgICAgICAgICAgICAgICAgKyttaXNz
Q29uZmlndXJhYmxlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
KyttaXNzTm9uY29uZmlndXJhYmxlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgdW5zaWduZWQgdW5pcXVlQ2FzZUNvdW50ID0gZGF0YS52YXJpYW50cy5zaXplKCk7CisgICAg
ICAgIGlmIChtaXNzQ29uZmlndXJhYmxlKQorICAgICAgICAgICAgdW5pcXVlQ2FzZUNvdW50IC09
IG1pc3NDb25maWd1cmFibGUgLSAxOworICAgICAgICBpZiAobWlzc05vbmNvbmZpZ3VyYWJsZSkK
KyAgICAgICAgICAgIHVuaXF1ZUNhc2VDb3VudCAtPSBtaXNzTm9uY29uZmlndXJhYmxlIC0gMTsK
KyAgICAgICAgaW50IHRydWVCbG9jayA9IG1pc3NDb25maWd1cmFibGUgPyB1bmlxdWVDYXNlQ291
bnQgLSAxIDogLTE7CisgICAgICAgIGludCBmYWxzZUJsb2NrID0gbWlzc05vbmNvbmZpZ3VyYWJs
ZSA/IHVuaXF1ZUNhc2VDb3VudCAtIDEgLSAhIW1pc3NDb25maWd1cmFibGUgOiAtMTsKKworICAg
ICAgICBWZWN0b3I8TEJhc2ljQmxvY2ssIDI+IGJsb2Nrcyh1bmlxdWVDYXNlQ291bnQpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9ja3Muc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAg
YmxvY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZXhpdCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDI+IGNhc2VzOwor
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpLCBibG9jayA9IDA7IGktLTspIHsKKyAgICAg
ICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgYmFzZVNldC5h
ZGQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKQor
ICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChz
dHJ1Y3R1cmUpLCBibG9ja3NbYmxvY2srK10sIFdlaWdodCgxKSkpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJ
RChzdHJ1Y3R1cmUpLCBibG9ja3NbdmFyaWFudC5yZXN1bHQoKSA/IHRydWVCbG9jayA6IGZhbHNl
QmxvY2tdLCBXZWlnaHQoMSkpKTsKKyAgICAgICAgfQorICAgICAgICBib29sIHN0cnVjdHVyZXND
aGVja2VkID0gbV9pbnRlcnByZXRlci5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0
dXJlLmlzU3Vic2V0T2YoYmFzZVNldCk7CisgICAgICAgIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zm
c2V0KGJhc2UsIHN0cnVjdHVyZXNDaGVja2VkLCBjYXNlcywgZXhpdCk7CisKKyAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5tX25leHRCbG9jazsKKworICAgICAgICBWZWN0b3I8
VmFsdWVGcm9tQmxvY2ssIDI+IHJlc3VsdHM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
ZGF0YS52YXJpYW50cy5zaXplKCksIGJsb2NrID0gMDsgaS0tOykgeworICAgICAgICAgICAgRGVs
ZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBp
ZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1tibG9ja10sIGJsb2NrICsgMSA8IGJs
b2Nrcy5zaXplKCkgPyBibG9ja3NbYmxvY2sgKyAxXSA6IGV4aXQpOworCisgICAgICAgICAgICBp
ZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIExWYWx1ZSBzdG9y
YWdlOworCisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0
KCkpKQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlID0gYmFzZTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBtX291dC5sb2FkUHRyKGJhc2Us
IG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIHN0b3JlUHJv
cGVydHkobV9vdXQuaW50NjRaZXJvLCBzdG9yYWdlLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsIHZh
cmlhbnQub2Zmc2V0KCkpOworCisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
LT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gdmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAgICAgICAgIG1fb3V0LnN0
b3JlMzIoCisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKSwgYmFzZSwgbV9oZWFwcy5KU0Nl
bGxfc3RydWN0dXJlSUQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChtX291dC5hbmNob3IodmFyaWFudC5yZXN1bHQoKSA/IG1fb3V0LmJvb2xlYW5UcnVlIDog
bV9vdXQuYm9vbGVhbkZhbHNlKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisgICAgICAgICAgICArK2Jsb2NrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1pc3NO
b25jb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1tmYWxz
ZUJsb2NrXSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQu
Ym9vbGVhbkZhbHNlKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobWlzc0NvbmZpZ3VyYWJsZSkgeworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oYmxvY2tzW3RydWVCbG9ja10sIGV4aXQpOworICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKSk7CisgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5h
cHBlbmRUbyhleGl0LCBjb250aW51YXRpb24pOworICAgICAgICBpZiAoIXN0cnVjdHVyZXNDaGVj
a2VkKQorICAgICAgICAgICAgc3BlY3VsYXRlKEJhZENhY2hlLCBub1ZhbHVlKCksIG51bGxwdHIs
IG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0
Qm9vbGVhbihtX291dC5waGkoSW50MzIsIHJlc3VsdHMpKTsKKyAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKaW5kZXggMWEwY2Y1OWZmZmQzYzBhM2EzZGYyNjUzZWExMzNhODU4ZTQ2MDFjMi4uM2VkMzA0
OTUyMmIwMjBmY2E1NmI2MjQ4ZDQ2Zjg5NGZiZjkxNTFiNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKQEAgLTQ0NCwxMSArNDQ0LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogCi0gICAgaWYgKHRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCB0cnVlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKLQotICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJl
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
cnVlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDI1ZGZmNTMz
Mzc4OTE0MjhlNjJmYTk1MTlkZTE0YTcxOTQ0ZDRiNzguLjhiOGUxNzk5ODI4OGE2YWI2ZjY4ZWQ5
NjdkOWM3ZGU3Yjc1Y2U3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKQEAgLTIwMTEsMTIgKzIwMTEsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Blcgog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3Zl
UHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAm
ZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7CiAgICAgICAgICAgICBzbG90LnNldEhpdChvZmZzZXQp
OwotICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhp
c09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJl
LT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgewotICAgICAgICAgICAgICAgIEFTU0VS
VCh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSk7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+
bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQo
KSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zm
c2V0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgfHwgIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNh
cGFjaXR5KCkpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+c2V0U3RydWN0dXJlKHZtLCBzdHJ1
Y3R1cmUpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKaW5kZXggZDAyODc5ZmU0Y2VkNTNkMDMxZDA5Mzg5YjkwMjQ5YTEwODU0Nzc2Yi4uNjcz
ODQ4ZWNjNGVhZjRkNjA1MGM0ODgzOGE3ZGYzNGViZGZhNmZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTUzMSwxMCArNTMxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgfHwgaGlqYWNrc0luZGV4aW5nSGVhZGVyKCk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7Ci0gICAgYm9vbCBt
YXlIYXZlSW5kZXhpbmdIZWFkZXIoKSBjb25zdDsKLSAgICBib29sIGNhbkNhY2hlRGVsZXRlSUMo
KSBjb25zdDsKLSAgICAKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCop
IGNvbnN0OyAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwg
UHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaAppbmRleCBmYjI3NmQ4MzliYjFiOGJiMjQyYTM1MDY2MDRiMzJlMjEwMmM4
Mjc2Li4xNWRhZDI2ZjljNzgxODljM2VkZmE5YjE4M2FjNzNlYTYxMjg1Mzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yNTYs
MjIgKzI1Niw2IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIoY29u
c3QgSlNDZWxsKiBjZWxsKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1
ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAotaW5s
aW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoKSBjb25zdAotewotICAg
IGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9i
bG9iLnR5cGUoKSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZURlbGV0ZUlDKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlw
ZSgpKSk7Ci19Ci0KIGlubGluZSBib29sIFN0cnVjdHVyZTo6bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gdHlw
ZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgJiYgZ2xvYmFsT2JqZWN0KCkgPT0gbGV4
aWNhbEdsb2JhbE9iamVjdDsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggOTE3NWNiNWRkZmM0NWY5ZWE2Njk4MjM5NTY4ZmRkNWI5MTI3MjMz
NS4uNzg0N2IyNTVhNzYwZDMwMzA2MWFlZGUzY2E4NzYzNDBiZDI1NzlkMiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBA
QAorMjAyMC0wMy0xMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+
CisKKyAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhlIERGRworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFy
a3MvZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0LmJsYWNrYm94KToKKyAgICAgICAg
KG5vSW5saW5lLmJsYWNrYm94LmRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2Mx
KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5
LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChibGFja2JveCk6CisgICAg
ICAgIChub0lubGluZS5ibGFja2JveC5wb2x5dmFyaWFudCk6CisgICAgICAgIChkb0FsbG9jMSk6
CisgICAgICAgIChub0lubGluZS5kb0FsbG9jMS5kb0FsbG9jMik6CisgICAgICAgIChub0lubGlu
ZS5kb0FsbG9jMik6CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5l
LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQu
YXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnRfdGhyb3dzLmJsYWNrYm94
KToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LnRlc3RTaW5nbGVTdHJ1Y3R1cmUuZG9BbGxv
YzEpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3gudGVzdFNpbmdsZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1
Y3R1cmUuZG9EZWxldGUyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUu
dGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS5kb0FsbG9jMik6CisgICAgICAgIChub0lubGluZS50
ZXN0U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS50ZXN0RXhpdC5kb0RlbGV0ZTMpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS50ZXN0RXhpdCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0RXhpdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy5kb0FsbG9j
NCk6CisgICAgICAgIChub0lubGluZS50ZXN0RXhpdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcyk6
CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy50ZXN0U2luZ2xlU3Ry
dWN0dXJlTWlzc1N0cmljdC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5kb0FsbG9jNSk6CisgICAgICAg
IChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy50ZXN0U2luZ2xlU3RydWN0dXJlTWlz
c1N0cmljdCk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmlj
dC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZS5kb0FsbG9jNik6CisgICAg
ICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdC50ZXN0U2luZ2xlU3Ry
dWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xl
U3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZS50ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkuZG9B
bGxvYzcpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25m
aWd1cmFibGUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5KToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eS50ZXN0UG9seW1vcnBoaWMuZG9EZWxldGU4KToKKyAgICAg
ICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eS50ZXN0UG9seW1vcnBoaWMpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudC5kb0RlbGV0
ZTkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudC5w
b2x5dmFyaWFudCk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWMudGVzdFBvbHl2
YXJpYW50KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5dmFyaWFudC50ZXN0Q29uc3RhbnRG
b2xkaW5nLmRvRGVsZXRlMTApOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHl2YXJpYW50LnRl
c3RDb25zdGFudEZvbGRpbmcpOgorICAgICAgICAobm9JbmxpbmUudGVzdENvbnN0YW50Rm9sZGlu
Zy50ZXN0T2JqZWN0U2lua2luZy5kb0FsbG9jMTEpOgorICAgICAgICAobm9JbmxpbmUudGVzdENv
bnN0YW50Rm9sZGluZy50ZXN0T2JqZWN0U2lua2luZyk6CisgICAgICAgIChub0lubGluZS50ZXN0
T2JqZWN0U2lua2luZy50ZXN0UHJveHkuZG9BbGxvYzEyKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RPYmplY3RTaW5raW5nLnRlc3RQcm94eS5ub0lubGluZS5kb0RlbGV0ZTEyKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RPYmplY3RTaW5raW5nLnRlc3RQcm94eSk6CisgICAgICAgIChub0lubGlu
ZS50ZXN0UHJveHkudGVzdFR5cGVkQXJyYXkuZG9EZWxldGUxMik6CisgICAgICAgIChub0lubGlu
ZS50ZXN0UHJveHkudGVzdFR5cGVkQXJyYXkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFR5cGVk
QXJyYXkudGVzdE1pc3NNaXhlZC5kb0RlbGV0ZTEzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RU
eXBlZEFycmF5LnRlc3RNaXNzTWl4ZWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NNaXhl
ZC50ZXN0TWlzc05vbk1peGVkLmRvRGVsZXRlMTQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1p
c3NNaXhlZC50ZXN0TWlzc05vbk1peGVkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTm9u
TWl4ZWQudGVzdEJ5VmFsLmRvRGVsZXRlMTUpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NO
b25NaXhlZC50ZXN0QnlWYWwpOgorCiAyMDIwLTAzLTE5ICBUb21hcyBQb3BlbGEgIDx0cG9wZWxh
QHJlZGhhdC5jb20+CiAKICAgICAgICAgW0pTQ11bQmlnRW5kaWFuc10gU2V2ZXJhbCBKU0Mgc3Ry
ZXNzIHRlc3RzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Rl
bGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5nLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2
NjM0NjRmMzE3N2NiNTlmYTZjZjkyNGUxNDIyNzQ2NTk0MDQxMzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5r
aW5nLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0
Y2ggU2VyaWVzIDMiCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNv
bmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30K
K25vSW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAgIHJldHVybiB4
Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gZG9BbGxvYzEoKSB7CisgICAgbGV0
IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLnkgPSA3CisgICAgb2JqLnkgPSBibGFj
a2JveChvYmoueSkKKyAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAgIHJldHVybiBvYmoueQor
fQorbm9JbmxpbmUoZG9BbGxvYzEpCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwMDAwMDA7ICsr
aSkgeworICAgIGRvQWxsb2MxKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjdjYmNiZDY5
OWIzYjAzMjY3Y2IwMWYxMjdhMGY1MjJjMWViNWQzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzCkBAIC0wLDAg
KzEsNDEgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiCisK
K2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30KKworZnVuY3Rpb24gYmxh
Y2tib3goeCkgeworICAgIHJldHVybiB4Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rp
b24gcG9seXZhcmlhbnQoeCkgeworICAgIGFzc2VydChkZWxldGUgeC54KQorfQorCitmdW5jdGlv
biBkb0FsbG9jMSgpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmou
eSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgIHBvbHl2YXJpYW50KG9iaikK
KyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2MxKQorCitmdW5jdGlvbiBkb0Fs
bG9jMigpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUKKyAgICBvYmouYiA9IDkK
KyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgIHBvbHl2YXJp
YW50KG9iaikKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2MyKQorCitmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBkb0FsbG9jMSgpCisgICAgZG9B
bGxvYzIoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRm
Zy1pbmxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45M2JlZTdiY2MxMmM5ZDJkZDdhNDI4MTY5NTE1MGYzZmZkYjM2YTEyCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxp
bmUuanMKQEAgLTAsMCArMSw0MDkgQEAKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAg
ICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFp
bGVkIikKK30KK25vSW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmKSB7
CisgICAgdHJ5IHsKKyAgICAgICAgZigpCisgICAgfSBjYXRjaCB7CisgICAgICAgIHJldHVybgor
ICAgIH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorbm9Jbmxp
bmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAgIHJldHVybiB4
Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZSgp
IHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAg
ICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkgPSBibGFja2Jv
eChvYmoueSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAgICAgICAgcmV0dXJuIG9i
ai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxKQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzEoKQorICAgIH0KK30KK25vSW5s
aW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RJbmxpbmVTaW5nbGVTdHJ1
Y3R1cmUoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUyKG8pIHsKKyAgICAgICAgYXNzZXJ0KGRl
bGV0ZSBvLngpCisgICAgfQorCisgICAgZnVuY3Rpb24gZG9BbGxvYzIoKSB7CisgICAgICAgIGxl
dCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3CisgICAgICAg
IG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGRvRGVsZXRlMihvYmopCisgICAgICAg
IHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMikKKworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTIoeyBpLCBmOiA0IH0p
CisgICAgICAgIGRvRGVsZXRlMih7IGksIGU6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwg
ZDogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRl
Mih7IGksIGI6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYTogNCB9KQorICAgICAgICBk
b0FsbG9jMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kp
IHsKKyAgICAgICAgZG9BbGxvYzIoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RJbmxpbmVTaW5n
bGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RFeGl0KCkgeworICAgIGZ1bmN0aW9uIGRvRGVs
ZXRlMyhvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICB9CisgICAgbm9J
bmxpbmUoZG9EZWxldGUzKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkg
eworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGY6IDQgfSkKKyAg
ICAgICAgZG9EZWxldGUzKHsgaSwgZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBkOiA0
IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsg
aSwgYjogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUzKHsg
aSwgYTogNCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RFeGl0KQorCitmdW5jdGlvbiB0ZXN0
U2luZ2xlU3RydWN0dXJlTWlzcygpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNCgpIHsKKyAgICAg
ICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAg
ICAgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmou
eikKKyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M0KQor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxv
YzQoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzKQorCitmdW5j
dGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpIHsKKyAgICAidXNlIHN0cmljdCIK
KworICAgIGZ1bmN0aW9uIGRvQWxsb2M1KCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAg
ICAgb2JqLnkgPSA1CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICJ4Iiwgewor
ICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MQor
ICAgICAgICB9KQorICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBhc3Nl
cnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBvYmoueCkKKyAgICAgICAgcmV0dXJuIG9iai55CisgICAg
fQorICAgIG5vSW5saW5lKGRvQWxsb2M1KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzUoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RT
aW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJl
TWlzc05vbkNvbmZpZ3VyYWJsZSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNigpIHsKKyAgICAg
ICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai55ID0gNQorICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkob2JqLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisg
ICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgb2JqLnkgPSBibGFja2Jv
eChvYmoueSkKKyAgICAgICAgYXNzZXJ0KCEoZGVsZXRlIG9iai54KSkKKyAgICAgICAgcmV0dXJu
IG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M2KQorCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzYoKQorICAgIH0KK30KK25v
SW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKQorCitmdW5jdGlv
biB0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzcoKSB7
CisgICAgICAgIGxldCBvYmogPSB7IGE6IDEsIGI6IDJ9CisgICAgICAgIG9ialsxXSA9IDUKKyAg
ICAgICAgZGVsZXRlIG9ialsxXQorICAgICAgICBibGFja2JveCgoKSA9PiBvYmoueCA9IDUpKCkK
KyAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09IDMpCisgICAgICAgIGFz
c2VydChkZWxldGUgb2JqLmEpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLmIpCisgICAgICAg
IGFzc2VydChkZWxldGUgb2JqLngpCisgICAgICAgIGFzc2VydChPYmplY3Qua2V5cyhvYmopLmxl
bmd0aCA9PSAwKQorICAgICAgICBvYmoueCA9IDcKKyAgICAgICAgcmV0dXJuIG9iagorICAgIH0K
KyAgICBub0lubGluZShkb0FsbG9jNykKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAw
MDsgKytpKSB7CisgICAgICAgIGRvQWxsb2M3KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2lu
Z2xlU3RydWN0dXJlRW1wdHkpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9ycGhpYygpIHsKKyAgICBm
dW5jdGlvbiBkb0RlbGV0ZTgob2JqKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLnkpCisg
ICAgICAgIHJldHVybiBvYmoKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGU4KQorCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgYTog
NCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAg
ICAgICAgZG9EZWxldGU4KHsgaSwgZjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU4KHsg
aSwgZTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0RlbGV0ZTgoeyBp
LCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOCh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxl
dGU4KHsgaSwgYjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU4KHsgaSwgYTogNCwgeTog
MTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGksIGE6IDQgfSkKKyAgICB9Cit9
Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWMpCisKK2Z1bmN0aW9uIHRlc3RQb2x5dmFyaWFudCgp
IHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTkob2JqKSB7CisgICAgICAgIGFzc2VydChkZWxldGUg
b2JqLnkpCisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwb2x5dmFy
aWFudChvYmopIHsKKyAgICAgICAgcmV0dXJuIGRvRGVsZXRlOShvYmopCisgICAgfQorICAgIG5v
SW5saW5lKHBvbHl2YXJpYW50KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyArK2kpIHsK
KyAgICAgICAgcG9seXZhcmlhbnQoeyBpLCBhOiA0IH0pCisgICAgfQorCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTkoeyBpLCBmOiA0IH0p
CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTkoeyBpLCBlOiA0LCB5OiAxMCB9KS55ID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGQ6IDQgfSkKKyAgICAgICAgZG9EZWxldGU5
KHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTkoeyBpLCBiOiA0IH0pCisgICAgICAgIGFz
c2VydChkb0RlbGV0ZTkoeyBpLCBhOiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAg
fQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgcG9s
eXZhcmlhbnQoeyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHl2YXJpYW50
KQorCitmdW5jdGlvbiB0ZXN0Q29uc3RhbnRGb2xkaW5nKCkgeworICAgIGZ1bmN0aW9uIGRvRGVs
ZXRlMTAob2JqKSB7CisgICAgICAgIGlmICgkdm0uZGZnVHJ1ZSgpKSB7CisgICAgICAgICAgICBv
YmogPSB7IGk6IDAsIGE6IDUsIHk6IDIwIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoZGVs
ZXRlIG9iai55KQorICAgICAgICBhc3NlcnQoKGRlbGV0ZSBvYmoueikgKyA1ID09IDYpCisgICAg
ICAgIHJldHVybiBvYmoKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxMCkKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGFzc2VydChkb0RlbGV0
ZTEwKHsgaSwgYTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0RlbGV0
ZTEwKHsgaSwgZjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGUxMCh7IGksIGU6IDQsIHk6
IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGUxMCh7IGksIGQ6IDQgfSkK
KyAgICAgICAgZG9EZWxldGUxMCh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUxMCh7IGks
IGI6IDQgfSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q29uc3RhbnRGb2xkaW5nKQorCitmdW5j
dGlvbiB0ZXN0T2JqZWN0U2lua2luZygpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jMTEoaSkgewor
ICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSAxCisgICAgICAgIG9iai55ID0g
MgorICAgICAgICBpZiAoaSA9PSAwKQorICAgICAgICAgICAgb2JqLmEgPSAzCisgICAgICAgIGVs
c2UgaWYgKGkgPT0gMSkKKyAgICAgICAgICAgIG9iai5iID0gMworICAgICAgICBlbHNlIGlmIChp
ID09IDMpCisgICAgICAgICAgICBvYmouYyA9IDMKKyAgICAgICAgZGVsZXRlIG9iai54CisgICAg
ICAgIGFzc2VydCgoZGVsZXRlIG9iai54KSArIDUgPT0gNikKKyAgICAgICAgcmV0dXJuIG9iai55
CisKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzExKQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGRvQWxsb2MxMShpICUgMykgPT0g
MikKKyAgICB9CisgICAgYXNzZXJ0KGRvQWxsb2MxMSg0KSA9PSAyKQorfQorbm9JbmxpbmUodGVz
dE9iamVjdFNpbmtpbmcpCisKK2Z1bmN0aW9uIHRlc3RQcm94eSgpIHsKKyAgICBmdW5jdGlvbiBk
b0FsbG9jMTIoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDEKKyAg
ICAgICAgb2JqLmNvdW50ID0gMAorCisgICAgICAgIGNvbnN0IGhhbmRsZXIgPSB7CisgICAgICAg
ICAgZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKSB7CisgICAgICAgICAgICBhc3NlcnQocHJv
cCA9PSAieiIpCisgICAgICAgICAgICBkZWxldGUgdGFyZ2V0LnoKKyAgICAgICAgICAgICsrb2Jq
LmNvdW50CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94
eShvYmosIGhhbmRsZXIpCisKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzEyKQorCisgICAg
ZnVuY3Rpb24gZG9EZWxldGUxMihvYmopIHsKKyAgICAgICAgZGVsZXRlIG9iai56CisgICAgfQor
ICAgIG5vSW5saW5lKGRvRGVsZXRlMTIpCisKKyAgICBsZXQgZm9vID0gZG9BbGxvYzEyKCkKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTEy
KGZvbykKKyAgICB9CisgICAgYXNzZXJ0KGZvby5jb3VudCA9IDEwMDAwMDApCit9Citub0lubGlu
ZSh0ZXN0UHJveHkpCisKK2Z1bmN0aW9uIHRlc3RUeXBlZEFycmF5KCkgeworICAgIGZ1bmN0aW9u
IGRvRGVsZXRlMTIob2JqKSB7CisgICAgICAgIG9iai5jb25zdHJ1Y3RvciA9IG51bGwKKyAgICAg
ICAgYXNzZXJ0KGRlbGV0ZSBvYmouY29uc3RydWN0b3IpCisgICAgfQorICAgIG5vSW5saW5lKGRv
RGVsZXRlMTIpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAg
ICAgICBkb0RlbGV0ZTEyKG5ldyBVaW50OEFycmF5KCkpCisgICAgfQorCisgICAgbGV0IGZvbyA9
IG5ldyBVaW50OEFycmF5KDEyKTsKKyAgICB0cmFuc2ZlckFycmF5QnVmZmVyKGZvby5idWZmZXIp
CisgICAgZG9EZWxldGUxMihmb28pCisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgZm9v
WzBdKQorfQorbm9JbmxpbmUodGVzdFR5cGVkQXJyYXkpCisKK2Z1bmN0aW9uIHRlc3RNaXNzTWl4
ZWQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUxMyhvYmopIHsKKyAgICAgICAgcmV0dXJuIGRl
bGV0ZSBvYmoueAorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEzKQorCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlMTMo
eyB5OiA0IH0pKQorICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAg
ICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0pCisgICAgICAgIGFzc2VydCghZG9EZWxldGUx
Myhmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RNaXNzTWl4ZWQpCisKK2Z1bmN0aW9uIHRl
c3RNaXNzTm9uTWl4ZWQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUxNChvYmopIHsKKyAgICAg
ICAgcmV0dXJuIGRlbGV0ZSBvYmoueAorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTE0KQor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4IiwgeworICAgICAg
ICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MQorICAgICAg
ICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTQoZm9vKSkKKworICAgICAgICBmb28gPSB7
IHk6IDQgfQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAieCIsIHsKKyAgICAg
ICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDAKKyAgICAg
ICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0ZTE0KGZvbykpCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdE1pc3NOb25NaXhlZCkKKworZnVuY3Rpb24gdGVzdEJ5VmFsKCkgeworICAgIGZ1bmN0
aW9uIGRvRGVsZXRlMTUob2JqKSB7CisgICAgICAgIHJldHVybiBkZWxldGUgb2JqWyJ4Il0KKyAg
ICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxNSkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUxNSh7IHk6IDQgfSkpCisgICAg
ICAgIGxldCBmb28gPSB7fQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9vLCAieCIs
IHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTog
NDEKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0ZTE1KGZvbykpCisKKyAgICAg
ICAgZm9vID0geyB4OiA0IH0KKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlMTUoZm9vKSkKKyAgICAg
ICAgYXNzZXJ0KGZvby54ID09IHVuZGVmaW5lZCkKKyAgICAgICAgZ2MoKQorICAgIH0KK30KK25v
SW5saW5lKHRlc3RCeVZhbCkKKwordGVzdEJ5VmFsKCkKK3Rlc3RNaXNzTWl4ZWQoKQordGVzdE1p
c3NOb25NaXhlZCgpCit0ZXN0VHlwZWRBcnJheSgpCit0ZXN0UHJveHkoKQordGVzdFNpbmdsZVN0
cnVjdHVyZSgpCit0ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKCkKK3Rlc3RFeGl0KCkKK3Rlc3RT
aW5nbGVTdHJ1Y3R1cmVNaXNzKCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KCkKK3Rl
c3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1
cmVFbXB0eSgpCit0ZXN0UG9seW1vcnBoaWMoKQordGVzdFBvbHl2YXJpYW50KCkKK3Rlc3RDb25z
dGFudEZvbGRpbmcoKQordGVzdE9iamVjdFNpbmtpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395408</attachid>
            <date>2020-04-03 14:06:45 -0700</date>
            <delta_ts>2020-04-06 08:36:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200403170644.patch</filename>
            <type>text/plain</type>
            <size>101396</size>
            <attacher name="Justin Michaud">justin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjY3NzVlNGZmNmY2NjM2NDlmOWUyMGM1MDVhMmJlMTFhZDg5NjRjLi5hZDRkYTRiZDhmZjQyYWMw
MGI0NmMzZDBjYjNmZTE5ZTFkNzI3MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFdoZW4g
d2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBzdHJ1
Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAgICAg
Y3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1cm5p
bmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMsCisg
ICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUgKG9y
IGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9naWMg
Zm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0eSB0
byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0aGUg
Y2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRlbGV0
ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBtaXNz
LCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKworICAg
ICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUgaWRl
bnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3Zl
cyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYgd2Ug
bmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFsc28g
Zml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1cyBv
ZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAgICAg
ICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2YgdGhp
cyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKworICAg
ICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlhbnQt
ZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3BlcnR5
LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0ZWNv
ZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZh
cmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJp
YW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1w
dFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3RydWN0
dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3Jl
Z2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0
ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6
b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om5l
d1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpyZXN1
bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2Zmc2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJvcGVydHlVbnNldCBjb25z
dCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBi
eXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpj
b21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6RGVsZXRl
QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzbG93VmVyc2lv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3Rh
dHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptYXJr
SWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01h
cC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAgICAo
SlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWNvcmRl
ZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3Rh
dHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6
bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoKKyAg
ICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFjaFZlY3Rvcik6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0ZUJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TXVsdGlEZWxldGVCeU9mZnNldERhdGE6Ondy
aXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Om11bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNo
ZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRp
ZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlIYXZl
SW5kZXhpbmdIZWFkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmNhbkNhY2hlRGVsZXRlSUMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA0LTAzICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW1hjb2RlXSBSZXBsYWNlIEFT
QU5fT1RIRVJfQ0ZMQUdTIGFuZCBBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTIHdpdGggJChpbmhl
cml0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2ZmMjI1ZTA3MWQ5
ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uNzEzMzAwMDI3ZWI1MTVlOGVhMzNkZTllMjdk
NjE4OTA4M2ZmZDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTAx
LDYgKzUwMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvQ29kZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgK
ICAgICBieXRlY29kZS9EYXRhRm9ybWF0LmgKKyAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5oCisgICAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2
YWxDb2RlQ2FjaGUuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOWUwZWUxZGU5ZTM0NzhjMGRhMzI4NTNjZjE2YmQyMjU3MmFjMmMyYi4uODAzNDQyYmYw
YmEzMGUzM2ViMDlkNTlmOGI0ZTI4MmQ1YWYwN2VkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNzgsNyArMTE3OCw5IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFG
N0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQz
MThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3
MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczMTFGQTMxMjQwREIxRDMwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovOyB9OwogCQk3MzRCNjU1NTIzRjVDMTA0MDBB
MDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJv
cGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0FEMDYyODIzRkY2NjI2
MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAw
OTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1
Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdh
c21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4
MTM5MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2Fz
bU1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zOTczLDcgKzM5NzUsMTEgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFG
N0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0
OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJp
YW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMzMjQwREIyNDkwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVC
eUlkVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTkwRDk2MjQw
MDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
ZWxldGVCeVN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczNEI2NTU0
MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVCeVN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGgu
aDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BT
dHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVs
ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI0Niw2ICs4MjUyLDEwIEBACiAJ
CQkJMEZDNzEyREQxN0NEODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oICovLAogCQkJCUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1
bXAuY3BwICovLAogCQkJCUZFNTA2ODY0MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJj
ZUR1bXAuaCAqLywKKwkJCQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuY3BwICovLAorCQkJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlk
VmFyaWFudC5oICovLAorCQkJCTczMTkwRDk2MjQwMDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0
YXR1cy5jcHAgKi8sCisJCQkJNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3Rh
dHVzLmggKi8sCiAJCQkJMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxl
LmNwcCAqLywKIAkJCQkwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUu
aCAqLywKIAkJCQkwRjJFQkJBQTFERURGOTRFMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNo
ZS5jcHAgKi8sCkBAIC05MjE5LDYgKzkyMjksOCBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5
REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0
NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRl
QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5
MyAvKiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzM0QjY1NTUyM0Y1QzEw
NDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzdiNjM4YmM0MDExYzlj
ZDQ0ZTE2Mjk5N2UwOTNjOGUwNGU0MjBhMi4uZGFmMjI1ZTFjYWM3M2M1Nzg1ZGFjNjJkMGRlNWRm
OWIwMjk1MTZjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjIwLDYgKzIyMCw4
IEBAIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAogYnl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAK
IGJ5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKIGJ5dGVjb2RlL0RlZmVy
cmVkU291cmNlRHVtcC5jcHAKK2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAorYnl0ZWNvZGUv
RGVsZXRlQnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAog
Ynl0ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKaW5kZXggZjZmN2JkMWNlNmY0YjA2ZjcxNDBiMTYyNDdmMTAwZjI0YzEzNzQzMy4uZDJlYWE0
N2ZhM2UwOTQwYjg1ZjAxMDkwMDk2NGVhNmRjZjE3ZWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMTI5LDEwICsxMjksNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3Ry
dWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ug
c28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLCBlLmcuIFR5cGVkQXJy
YXkgY2VsbHMgcmVxdWlyZSBhIGNoZWNrIGZvciBuZXV0ZXJpbmcgc3RhdHVzLgotICAgIC8vIFNl
ZSB0aGUgRGVsZXRlIGNvZGUgYmVsb3cuCi0gICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmNhbkNhY2hl
RGVsZXRlSUMoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKCFuZXdTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nl
c3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVy
ZSwgeyB9LCB7IH0pKTsKIH0KIApAQCAtMTk1MCwxOCArMTk0Nyw5IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQog
ICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGpp
dCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFj
ZSk7CiAKLSAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5t
YXlIYXZlSW5kZXhpbmdIZWFkZXIoKTsKLSAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMg
Y2FzZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgotICAg
ICAgICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5LgotICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmNhbkNhY2hlRGVs
ZXRlSUMoKSk7Ci0gICAgICAgIC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBw
cm9wZXJ0aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgotICAgICAgICBib29s
IHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAm
JiAhaGFzSW5kZXhpbmdIZWFkZXI7Ci0KICAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCks
IHZhbHVlUmVncyk7CiAKLSAgICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1
dHRlcmZseSkgewotICAgICAgICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZs
eSh2bSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFzZUdQUik7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChtX29mZnNldCkpIHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAg
ICAgIHZhbHVlUmVncywKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDY1N2Uy
YmIzZTIzYmE3NWI0NjcyMDMwYWFjMzhmNmY4NTNjMjQ5ZjUuLmExYWQzNzY2OWFmMTIwMDMwMjM1
MTUwMmUzNGM5MGMyNDE4ODRlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC0xNTAwLDYgKzE1MDAsOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0
SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3Vs
dCkKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0
ZXJhdG9yLT52YWx1ZS5wdXRTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAg
IGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5pbnMpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUuaW5TdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVzKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVl
LmRlbGV0ZVN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICB9CiAjZW5kaWYKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJ
ZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRW
YXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWQ0MmJlOTljZDAwMDJhYjU1YTQ1ZmMyODY5MjAwMmU4
N2M2NmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RE
dW1wLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJ
ZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdCwKKyAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKKyAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAsIG1fb2xkU3Ry
dWN0dXJlKG9sZFN0cnVjdHVyZSkKKyAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkK
KyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50
aWZpZXIpKQoreworICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX29mZnNldCA9
PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZSk7CisgICAgZWxz
ZQorICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQ6
On5EZWxldGVCeUlkVmFyaWFudCgpIHsgfQorCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJ
ZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0g
b3RoZXI7Cit9CisKK0RlbGV0ZUJ5SWRWYXJpYW50JiBEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0
b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBtX2lkZW50aWZpZXIg
PSBvdGhlci5tX2lkZW50aWZpZXI7CisgICAgbV9yZXN1bHQgPSBvdGhlci5tX3Jlc3VsdDsKKyAg
ICBtX29sZFN0cnVjdHVyZSA9IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIG1fbmV3U3RydWN0
dXJlID0gb3RoZXIubV9uZXdTdHJ1Y3R1cmU7CisgICAgbV9vZmZzZXQgPSBvdGhlci5tX29mZnNl
dDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgRGVsZXRlQnlJZFZhcmlhbnQ6OmF0dGVt
cHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFt
X2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX3Jlc3VsdCAhPSBvdGhlci5tX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVy
Lm1faWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29mZnNl
dCAhPSBvdGhlci5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1f
b2xkU3RydWN0dXJlICE9IG90aGVyLm1fb2xkU3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQVNTRVJUKG1fbmV3U3RydWN0dXJlID09IG90aGVyLm1fbmV3U3RydWN0dXJlKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50Ojp3cml0ZXNT
dHJ1Y3R1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFuZXdTdHJ1Y3R1cmUoKTsKK30KKwor
dm9pZCBEZWxldGVCeUlkVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2
b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIG1fb2xkU3RydWN0dXJlLT5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3
U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFy
aWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQo
b3V0LCAwKTsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQor
eworICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChtX29sZFN0cnVjdHVyZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIXZtLmhlYXAuaXNNYXJrZWQo
bV9uZXdTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
IG91dCwgRHVtcENvbnRleHQqKSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIpOworICAgIG91
dC5wcmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwgIicsIHJlc3VsdD0iLCBtX3Jlc3VsdCk7Cisg
ICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAgICAgICBvdXQucHJpbnQoIiwgIiwgKm1fb2xkU3Ry
dWN0dXJlKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiIC0+
ICIsICptX25ld1N0cnVjdHVyZSk7CisgICAgb3V0LnByaW50KCIsIG9mZnNldCA9ICIsIG9mZnNl
dCgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjg3NzZiNjk3OWY2ZDljMjM2NWNjZTM1NDFmZTdhZmQxYzEyMjBkOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlk
VmFyaWFudC5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIk9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOworc3Ry
dWN0IER1bXBDb250ZXh0OworCitjbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGVsZXRlQnlJZFZhcmlhbnQoCisgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LAorICAgICAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdXRyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsK
KworICAgIH5EZWxldGVCeUlkVmFyaWFudCgpOworCisgICAgRGVsZXRlQnlJZFZhcmlhbnQoY29u
c3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKyAgICBEZWxldGVCeUlkVmFyaWFudCYgb3BlcmF0b3I9
KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQorICAgIGJvb2wgcmVz
dWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKyAgICBib29sIHdyaXRlc1N0cnVjdHVy
ZXMoKSBjb25zdDsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CisKKyAgICBib29sIGlzUHJvcGVydHlVbnNldCgpIGNvbnN0IHsgcmV0dXJu
IG9mZnNldCgpID09IGludmFsaWRPZmZzZXQ7IH0KKworICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7Cisg
ICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CisgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBj
b25zdDsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBEZWxldGVCeUlk
VmFyaWFudCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFv
dGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5t
X2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOworCisgICAg
Ym9vbCBtX3Jlc3VsdDsKKyAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOworICAgIFN0cnVj
dHVyZSogbV9uZXdTdHJ1Y3R1cmU7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAg
Q2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdmMjI5MjU5NDZjZjZkYjdjYzJhOTI1Nzk2YTJkZDFiZjRhNWNhOWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRl
QnlTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlbGV0
ZUJ5U3RhdHVzLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJD
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nl
c3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0
RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0
dGVyU2V0dGVyOworfQorCitib29sIERlbGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0
IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1
c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0
ZUJ5U3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRp
ZEV4aXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5t
X2xvY2spOworCisgICAgRGVsZXRlQnlTdGF0dXMgcmVzdWx0OworCisjaWYgRU5BQkxFKERGR19K
SVQpCisgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soCisgICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5
dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFwKTsK
KyAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgRU5BQkxFKEpJVCkK
K0RlbGV0ZUJ5U3RhdHVzOjpEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgewor
ICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRl
ID0gTm9JbmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1t
YXJ5OjpTaW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAg
Y2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHVi
SW5mby50b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Ns
b3dQYXRoOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICBjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDb2RlQmxvY2sqIGJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCit7
CisgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFy
eShibG9jay0+dm0oKSwgc3R1YkluZm8pOworICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkp
KQorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKwor
ICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsK
KyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2FjaGVUeXBl
OjpVbnNldDoKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOwor
CisgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3Mq
IGxpc3QgPSBzdHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZvciAodW5zaWduZWQgbGlzdElu
ZGV4ID0gMDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRleCkgeworICAgICAg
ICAgICAgY29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlzdEluZGV4KTsKKyAg
ICAgICAgICAgIEFTU0VSVCghYWNjZXNzLnZpYVByb3h5KCkpOworCisgICAgICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50eXBlKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgICAgIGNhc2Ug
QWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CisgICAgICAgICAgICAgICAgRGVs
ZXRlQnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBhY2Nlc3MudHlwZSgp
ID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2UsIHN0cnVjdHVyZSwgbnVs
bHB0ciwgaW52YWxpZE9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5k
VmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3Rh
dHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRl
bGV0ZTogeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwg
YWNjZXNzLmlkZW50aWZpZXIoKS51aWQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAo
IW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVz
KEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChvZmZzZXQsIG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0KCkpOyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vz
cy5pZGVudGlmaWVyKCksIHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBhY2Nlc3Mub2Zm
c2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJp
YW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xv
d1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhK
U0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwg
KnN0dWJJbmZvKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBEZWxldGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVC
eVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlkRXhp
dCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisK
KyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAg
ICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAgICAg
ICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJlc3VsdCkgLT4gRGVs
ZXRlQnlTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9y
aWdpbikpIHsKKyAgICAgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNlbGluZVJlc3VsdCA9
IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywg
YmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAgICAgICAgICAgIGJh
c2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQo
RXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJz
aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworCisgICAgICAg
IGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3Vs
dDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0
YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
U2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoc3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBi
bGVzcygqc3RhdHVzLmRlbGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVG
b3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlk
RXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVCeVN0YXR1cyBEZWxl
dGVCeVN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQ
YXRoKCkpCisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1Bh
dGgpOworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKK30K
Kwordm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90aGVy
KQoreworICAgIGlmIChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2Vy
dmVkU2xvd1BhdGgoKSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAq
dGhpcyA9IERlbGV0ZUJ5U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0
aCk7CisgICAgfTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1h
dGlvbjoKKyAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fz
ZSBTaW1wbGU6CisgICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAg
ICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlh
bnQgOiBvdGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQo
b3RoZXJWYXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgor
ICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93
KCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBEZWxldGVCeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAg
IGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmFyaWFudHMu
cmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFudCkgLT4gYm9vbCB7
CisgICAgICAgICAgICByZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
KTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBt
X3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBEZWxldGVC
eVN0YXR1czo6c2luZ2xlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgcmVzdWx0ID0gbV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAo
IWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlk
ZW50aWZpZXIgIT0gcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OnZpc2l0QWdncmVn
YXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZp
c2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92
YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9v
bCBEZWxldGVCeVN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGZvciAoYXV0byYgdmFy
aWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgRGVsZXRlQnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBvdXQucHJpbnQoIigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5m
b3JtYXRpb246CisgICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGUiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQu
cHJpbnQoIkxpa2VseVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBP
YnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2JzZXJ2ZWRUYWtlc1Ns
b3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJpbnQoIiwgIiwgbGlz
dER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZTVhZDYwMmI2NTE3MGMxNDYwMjczN2RkN2NjODU1NzY5OGY1ZjcxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAg
LTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNs
dWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIK
KyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVk
ZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3ND
YXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNz
IERlbGV0ZUJ5U3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNo
ZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAg
ICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxl
LAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAg
IExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFr
ZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsK
KworICAgIERlbGV0ZUJ5U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24p
CisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0YXRlIHN0YXRl
KQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUg
IT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNT
dGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNs
b3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7
IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7
IH0KKyAgICBjb25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsg
cmV0dXJuIG1fdmFyaWFudHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50
aWZpZXIoKSBjb25zdDsKKworICAgIERlbGV0ZUJ5U3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7
CisKKyAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQg
dGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZv
aWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0
ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAg
ICBib29sIGZpbmFsaXplKFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVs
ZXRlQnlJZFZhcmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwg
U3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IERlbGV0ZUJ5U3RhdHVz
Jik7CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvckJhc2VsaW5lKENvZGVC
bG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworI2lmIEVOQUJM
RShKSVQpCisgICAgc3RhdGljIERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKwor
ICAgIFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBt
X3N0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCmluZGV4IGRiZDVhODgyMzEyNDIyZDRlOGIyZWRkM2I3
OTgyMmM3NjdhN2JiYzguLmYwMzE5MDExNWEzYjhlNDJiNGViOGI4NzQwM2FmMmQ4NGUwMzc0ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0z
Nyw2ICszNyw3IEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwogY2xhc3Mg
SW5CeUlkU3RhdHVzOwogY2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVz
OwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiBzdHJ1Y3QgQnlWYWxJbmZvOwogCkBAIC00OCw2
ICs0OSw3IEBAIHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7
IG51bGxwdHIgfTsKICAgICBJbkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OwogICAg
IFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBEZWxldGVCeVN0YXR1
cyogZGVsZXRlU3RhdHVzIHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPENvZGVP
cmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAppbmRleCBjOTQ4NGI0ODVhZGZlNmRhYjRjY2YyYjdhYTY0NWJmNzg4OTgwODMyLi5kNjE1
YTEzZDljM2M0NzVhNjE2YzJlNTQ3NzI5NTU0NjE2OWM0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNCw2ICsz
NCw3IEBAIFJlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNv
cmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CiAg
ICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RGTW92ZShvdGhlci5p
bnMpOworICAgIGRlbGV0ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwogICAgIHNocmlua1Rv
Rml0KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNzUsMTAgKzc2LDIwIEBAIEluQnlJZFN0
YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIGNvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVsZXRlQnlTdGF0dXMq
IFJlY29yZGVkU3RhdHVzZXM6OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4sIGNvbnN0IERlbGV0ZUJ5U3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0
dXNQdHIgPSBtYWtlVW5pcXVlPERlbGV0ZUJ5U3RhdHVzPihzdGF0dXMpOworICAgIERlbGV0ZUJ5
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgZGVsZXRlcy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90
VmlzaXRvciYgc2xvdFZpc2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKICAg
ICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRBZ2dyZWdh
dGUoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKQEAgLTg5LDYgKzEwMCw4IEBAIHZvaWQgUmVjb3Jk
ZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAg
ICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYg
cGFpciA6IGlucykKICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9y
KTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+
bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZp
bmFsaXplV2l0aG91dERlbGV0aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCmluZGV4IGIzNTVlOWI2MjMzODQ2MjkyNjQ4
MmM3YzFiOTFmNDIxZmZlNjIwZDAuLjllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4
ZDA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
YWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAi
R2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRC
eUlkU3RhdHVzLmgiCkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsK
ICAgICBHZXRCeVN0YXR1cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0
IEdldEJ5U3RhdHVzJik7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25z
dCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0YXR1cyog
YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsK
KyAgICBEZWxldGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYs
IGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CiAgICAgCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShT
bG90VmlzaXRvciYpOwogICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKQEAgLTYz
LDEyICs2NSwxNCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMoZ2V0
cyk7CiAgICAgICAgIGZ1bmMocHV0cyk7CiAgICAgICAgIGZ1bmMoaW5zKTsKKyAgICAgICAgZnVu
YyhkZWxldGVzKTsKICAgICB9CiAgICAgCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2lu
LCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0czsK
ICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlk
U3RhdHVzPj4+IHB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVu
aXF1ZV9wdHI8SW5CeUlkU3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVP
cmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBkZWxldGVzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOTUzZmJhZWY0OGYzYTU1
NGQ0NTliZDlhMmIzZDZlNjNkYWE3Y2FjNy4uNzcxZDkyZTgyMzllNDNhYjI1ZmRiNjZmY2YxMDU5
OWVhYWNhMzk0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzcxMCw2ICszNzEwLDQxIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFs
c2UpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZz
ZXQ6IHsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFRy
YW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisKKyAgICAgICAgLy8gT3JkaW5hcmlseSB5b3Ug
aGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggY2FsbGluZyBzZXRTaG91bGRUcnlDb25zdGFudEZvbGRp
bmcoKQorICAgICAgICAvLyBiZWNhdXNlIG9mIHRoZSBlZmZlY3Qgb24gY29tcGlsZSB0aW1lcywg
YnV0IHRoaXMgbm9kZSBpcyBGVEwtb25seS4KKyAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlD
b25zdGFudEZvbGRpbmcodHJ1ZSk7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSBiYXNlID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgaWYgKG5vZGUtPm11bHRpRGVsZXRlQnlP
ZmZzZXREYXRhKCkud3JpdGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAgZGlkRm9sZENsb2Ji
ZXJTdHJ1Y3R1cmVzKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlE
ZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
IGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9m
ZnNldERhdGEoKS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgdGhpc1NldCA9ICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgIHRoaXNTZXQuZmlsdGVyKGJhc2UpOworICAgICAgICAgICAgaWYg
KHRoaXNTZXQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24obV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAg
ICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKHRoaXNTZXQpOworICAgICAgICB9CisKKyAgICAgICAg
b2JzZXJ2ZVRyYW5zaXRpb25zKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbnMpOworICAgICAgICBp
ZiAoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5ld1Nl
dCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRFeGVjdXRh
YmxlOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOwpAQCAtNDEwOCw2ICs0MTQzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJlYWs7CiAKQEAgLTQy
ODksNiArNDMyNSwxMyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpmaWx0ZXJJQ1N0YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0
cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+ZGVsZXRlQnlTdGF0dXMoKS0+
ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDUzYjAxNDgz
ZWQ0MTQ5MDg0ODc1MWRkYjMzNjlkMjE2YmNiNWQ1YzguLmJlNjcxMjFjZTMxMzg1ZGZkOTVlN2Ri
NDE4OWJkOGNjZjc4OTg4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA3LDYgKzQwNyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgog
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
ICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgpAQCAtMTI2Niw3ICsxMjY3LDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OiB7CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogewogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUobV9ncmFwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDk5NjFkOTAzMmQ2ODBkODUzNDY1OThkZTZhMmI4ZmFjZDczNDI3YmQu
LmZhN2JiOGEwYWExMDAwYjZmOThlMDI5YzJmMzMyN2ViZGI0Nzg2NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJERkdHcmFw
aC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTI0OSw2ICsyNTAsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0
aW9uU2l6ZSk7CisKKyAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCisgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMpOwogICAgIAogICAgIC8vIEVp
dGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRp
dGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhv
bGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBA
IC00NjE0LDYgKzQ2MTgsMTA0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgIGdldHRlciwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgcmVnaXN0ZXJPZmZzZXQs
ICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIHByZWRpY3Rpb24pOwogfQogCit2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5h
dGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzKQor
eworICAgIGlmICghZGVsZXRlQnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZGVsZXRlQnlTdGF0dXMu
dmFyaWFudHMoKS5zaXplKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAg
ICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlk
LCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA+IDEpIHsKKyAgICAgICAg
aWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpCisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNl
UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBkZWxldGVCeVN0YXR1
cy52YXJpYW50cygpLnNpemUoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFkZFRvR3JhcGgoRmls
dGVyRGVsZXRlQnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2Vz
KCkuYWRkRGVsZXRlQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMp
KSwgYmFzZSk7CisKKyAgICAgICAgYm9vbCBoYXNIaXQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBo
YXNNaXNzID0gZmFsc2U7CisgICAgICAgIGJvb2wgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSA9IGZh
bHNlOworCisgICAgICAgIGZvciAoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBk
ZWxldGVCeVN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgaWYgKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIGhhc0hpdCA9
IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZhcmlhbnQucmVzdWx0KCkpCisgICAgICAg
ICAgICAgICAgaGFzTWlzcyA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWhhc0hpdCkgeworICAgICAgICAgICAgaWYgKChoYXNNaXNzICYmICFoYXNNaXNzTm9uY29u
ZmlndXJhYmxlKSB8fCAoIWhhc01pc3MgJiYgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkpIHsKKyAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKKworICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1cy52YXJp
YW50cygpKQorICAgICAgICAgICAgICAgICAgICBiYXNlU2V0LmFkZCh2YXJpYW50Lm9sZFN0cnVj
dHVyZSgpKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9w
SW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChiYXNlU2V0KSksIGJhc2UpOworICAgICAgICAg
ICAgICAgIHNldChkZXN0aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4oZGVsZXRlQnlTdGF0
dXMudmFyaWFudHMoKVswXS5yZXN1bHQoKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAg
ICAgZGF0YS0+dmFyaWFudHMgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpOworICAgICAgICBk
YXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgc2V0KGRl
c3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBP
cEluZm8oZGF0YSksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKKyAgICBEZWxldGVCeUlk
VmFyaWFudCB2YXJpYW50ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsKKworICAgIGlm
ICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRl
bGV0ZUJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZERlbGV0ZUJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJh
c2UpOworICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICAgICAg
c2V0KGRlc3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJEZWxldGVC
eVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGREZWxl
dGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1cykpLCBiYXNlKTsK
KyAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICBBU1NFUlQodmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CisgICAgQVNTRVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgIEFTU0VSVChp
c1ZhbGlkT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKTsKKworICAgIE5vZGUqIHByb3BlcnR5U3Rv
cmFnZTsKKyAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVj
dHVyZSgpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
KSk7CisKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpCisgICAgICAg
IHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CisgICAgZWxzZQorICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CisKKyAgICBTdG9yYWdlQWNjZXNz
RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsKKyAgICBkYXRh
LT5vZmZzZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIg
PSBpZGVudGlmaWVyTnVtYmVyOworCisgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgUHV0QnlPZmZz
ZXQsCisgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAg
ICAgICBiYXNlLAorICAgICAgICBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgYWRkVG9H
cmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgc2V0KGRl
c3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkpOworICAg
IHJldHVybjsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQoCiAgICAgTm9k
ZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29u
c3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKIHsKQEAgLTU5
NDcsMTYgKzYwNDksNTMgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUu
bV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKKyAgICAg
ICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1f
aWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CiAg
ICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygp
W2lkZW50aWZpZXJOdW1iZXJdOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRU
b0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCB1aWQpKSwgYmFzZSkpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKTsKKyAgICAgICAgICAgIGhhbmRsZURl
bGV0ZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1i
ZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9p
ZCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7
CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7Ci0gICAgICAg
ICAgICBOb2RlKiBrZXkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIGtleSkpOwor
ICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Cisg
ICAgICAgICAgICBib29sIHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1f
aWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisK
KyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAwOworCisgICAgICAgICAg
ICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQorICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgeworCisgICAgICAgICAgICAgICAgaWYgKENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IGRlbGV0ZUJ5U3RhdHVzLnNpbmdsZUlkZW50
aWZpZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0g
aWRlbnRpZmllci51aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllck51bWJlciA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoaWRlbnRpZmllci51aWQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFwaC5mcmVlemVTdHJvbmcoaWRlbnRp
Zmllci5jZWxsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNT
eW1ib2xDZWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0NlbGwsIE9wSW5mbyhmcm96ZW4pLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50
LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCks
IHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJ
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJZCkgeworICAgICAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CisgICAgICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywgdWlkKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVEZWxldGVCeUlk
KGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCBkZWxl
dGVCeVN0YXR1cyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIHByb3BlcnR5KSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9kZWxfYnlfdmFsKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGQxOTUyMmZlZDVlOGU1
ZmFmYzVkOTUzZWM4MzIwZWU3ZDY3ZjUyM2MuLjYyYmIxMjU4ZDUwYjkzMzkwMmFkMjJkYzZlNDk4
NmM2YjU2MTEzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC00NjcsNiArNDY3LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEZp
bHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNl
IEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
ICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTI3
OCw2ICsxMjc5LDE3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihIZWFw
TG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9k
ZShub2RlLT5jaGlsZDIoKS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAg
IGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogeworICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1
cmVJRCk7CisgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKKyAgICAgICAgQWJzdHJh
Y3RIZWFwIGhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YSgpLmlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICB3cml0ZShoZWFwKTsKKyAgICAgICAgaWYg
KG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkud3JpdGVzU3RydWN0dXJlcygpKQorICAg
ICAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgZGVmKEhlYXBMb2Nh
dGlvbihOYW1lZFByb3BlcnR5TG9jLCBoZWFwLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKGdy
YXBoLmZyZWV6ZVN0cm9uZyhKU1ZhbHVlKCkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgICAgIAogICAgIGNhc2UgUHV0QnlPZmZzZXQ6IHsKICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IG5vZGUtPnN0b3JhZ2VBY2Nlc3NEYXRhKCkuaWRlbnRpZmllck51bWJlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHAKaW5kZXggZWU5OGZhYzIzMDUzNDk5MzA1OTQ4YTdjNDAyZGYzOGQyYmYwNmRlYi4uZjE3NDVl
Y2FhMDE1YTk2ZGViZjBkYzFhOWJhYTkyODEyMWQzOTY1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTg2LDYgKzg2LDcg
QEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1
czoKICAgICAgICAgLy8gVGhlc2UgZG8gY2xvYmJlciBtZW1vcnksIGJ1dCBub3RoaW5nIHRoYXQg
aXMgb2JzZXJ2YWJsZS4gSXQgbWF5IGJlIG5pY2UgdG8gc2VwYXJhdGUgdGhlCiAgICAgICAgIC8v
IGhlYXBzIGludG8gdGhvc2UgdGhhdCBhcmUgb2JzZXJ2YWJsZSBhbmQgdGhvc2UgdGhhdCBhcmVu
J3QsIGJ1dCB3ZSBkb24ndCBkbyB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg0NDAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5k
ZXggNjUwNTNjZWI1ZTA4N2EwY2Q0YTMxNDgwYWZkZThkNjUxODFlZDE0My4uOTExZGQ5YjFlNzdh
Y2I1NThhODYzMGVmMmMxODEwMDYwZjFlZGMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTUwOSw2ICs1MDks
MzYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBNdWx0aURl
bGV0ZUJ5T2Zmc2V0OiB7CisgICAgICAgICAgICAgICAgRWRnZSBiYXNlRWRnZSA9IG5vZGUtPmNo
aWxkMSgpOworICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBiYXNlRWRnZS5ub2RlKCk7Cisg
ICAgICAgICAgICAgICAgTXVsdGlEZWxldGVCeU9mZnNldERhdGEmIGRhdGEgPSBub2RlLT5tdWx0
aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpOworCisgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSBi
YXNlVmFsdWUgPSBtX3N0YXRlLmZvck5vZGUoYmFzZSk7CisKKyAgICAgICAgICAgICAgICBtX2lu
dGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gUHVzaCBDRkEgb3ZlciB0aGlzIG5v
ZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCisgICAgICAgICAgICAgICAgYWxyZWFk
eUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xk
ZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUuY29udGFpbnMobV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGEudmFyaWFudHNbaS0tXSA9IGRhdGEudmFyaWFudHMubGFzdCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YS52YXJpYW50cy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEudmFyaWFudHMuc2l6ZSgpICE9IDEpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZW1pdERlbGV0ZUJ5T2Zmc2V0KAorICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgZGF0YS52YXJp
YW50c1swXSwgZGF0YS5pZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6IHsKICAgICAgICAgICAg
ICAgICBFZGdlIGJhc2VFZGdlID0gbm9kZS0+Y2hpbGQxKCk7CkBAIC0xMzEyLDYgKzEzNDIsNDUg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjaGlsZEVkZ2UpOwogICAgICAgICB9CiAgICAg
fQorCisgICAgdm9pZCBlbWl0RGVsZXRlQnlPZmZzZXQodW5zaWduZWQgaW5kZXhJbkJsb2NrLCBO
b2RlKiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQorICAgIHsKKyAg
ICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbm9kZSwgb3JpZ2luLmV4aXRPSyk7CisgICAgICAgIGFkZEJhc2VDaGVjayhp
bmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSk7CisgICAgICAgIG5vZGUtPmNoaWxkMSgpLnNldFVzZUtp
bmQoS25vd25DZWxsVXNlKTsKKworICAgICAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkp
IHsKKyAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFu
KHZhcmlhbnQucmVzdWx0KCkpKTsKKyAgICAgICAgICAgIG5vZGUtPm9yaWdpbiA9IG5vZGUtPm9y
aWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMu
YWRkKAorICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKSk7CisKKyAgICAgICAgRWRnZSBwcm9wZXJ0eVN0b3JhZ2U7CisKKyAgICAgICAgaWYgKGlz
SW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByb3BlcnR5
U3RvcmFnZSA9IEVkZ2UobV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAg
ICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBHZXRCdXR0ZXJmbHksIG9yaWdpbiwgbm9kZS0+Y2hp
bGQxKCkpKTsKKworICAgICAgICBTdG9yYWdlQWNjZXNzRGF0YSYgZGF0YSA9ICptX2dyYXBoLm1f
c3RvcmFnZUFjY2Vzc0RhdGEuYWRkKCk7CisgICAgICAgIGRhdGEub2Zmc2V0ID0gdmFyaWFudC5v
ZmZzZXQoKTsKKyAgICAgICAgZGF0YS5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJl
cjsKKworICAgICAgICBOb2RlKiBjbGVhclZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZShpbmRleEluQmxvY2ssIFNwZWNOb25lLCBKU0NvbnN0YW50LCBvcmlnaW4sIE9wSW5mbyhtX2dy
YXBoLmZyZWV6ZVN0cm9uZyhKU1ZhbHVlKCkpKSk7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCisgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBQdXRCeU9mZnNl
dCwgb3JpZ2luLCBPcEluZm8oJmRhdGEpLCBwcm9wZXJ0eVN0b3JhZ2UsIG5vZGUtPmNoaWxkMSgp
LCBFZGdlKGNsZWFyVmFsdWUpKTsKKyAgICAgICAgb3JpZ2luID0gb3JpZ2luLndpdGhJbnZhbGlk
RXhpdCgpOworICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
aW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUHV0U3RydWN0dXJlLCBvcmlnaW4sIE9wSW5mbyh0cmFu
c2l0aW9uKSwKKyAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgbV9ncmFwaC5j
b252ZXJ0VG9Db25zdGFudChub2RlLCBqc0Jvb2xlYW4odmFyaWFudC5yZXN1bHQoKSkpOworICAg
ICAgICBub2RlLT5vcmlnaW4gPSBvcmlnaW47CisgICAgfQogICAgIAogICAgIHZvaWQgYWRkQmFz
ZUNoZWNrKAogICAgICAgICB1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNvbnN0
IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNTVkM2M4ZmQ1ZGNmOGZhMmVm
YmEzN2Y5NmRjOTA5OWQ0OTcyNTE4MS4uOTJjMDM4ZjA1OTAyZWU4YzMxMGM1YTExM2Q2NDk1ZDA1
MDUxMGNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTg2
LDYgKzE4Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIENoZWNrVmFyYXJnczoKICAgICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKICAgICBjYXNl
IE11bHRpR2V0QnlPZmZzZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNh
c2UgVmFsdWVSZXA6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKQEAg
LTI0NSw2ICsyNDYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICBjYXNlIERhdGVHZXRJbnQzMk9yTmFOOgogICAgIGNhc2UgRGF0ZUdldFRpbWU6
CiAgICAgY2FzZSBEYXRhVmlld0dldEludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCmluZGV4IDc5YTljNGZhYjUwZTZjNjY1NWE0NmQ0YzlhMWY5OGJlZjNj
NzhmMzcuLjJjMzc2ODAzYzRjYTZkZjRmMmZkMmJlMDVjMTRlMDY0M2Q0ODM1N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTgwOCw2ICsxODA4
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBNdWx0
aURlbGV0ZUJ5T2Zmc2V0OiAgeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJbnRy
b2R1Y2UgYSB2YXJpYW50IG9mIE1hdGNoU3RydWN0dXJlIHRoYXQgZG9lc24ndCBkbyBhIGNlbGwg
Y2hlY2suCkBAIC0yNTc5LDYgKzI1ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRl
ckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENyZWF0
ZUFyZ3VtZW50c0J1dHRlcmZseToKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA2NWZlNmE2ODE1MjgxOWIxMTIyOTU2ZDk1MDYwMjlm
YjdhODRkMDc4Li5iYjZkOGY1MjhiMTZjYjU4YTk1MjlmNTBiNThmYWEwMTBmNDZlMzQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMzA0LDYgKzMwNCwxMiBAQCB2
b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeFN0ciwg
Tm9kZSogbm9kZSwgRHVtcENvbnRleAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
aW5Db250ZXh0KGRhdGEudmFyaWFudHNbaV0sIGNvbnRleHQpKTsKICAgICB9CisgICAgaWYgKG5v
ZGUtPmhhc011bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkpIHsKKyAgICAgICAgTXVsdGlEZWxldGVC
eU9mZnNldERhdGEmIGRhdGEgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpOworICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJpZCIsIGRhdGEuaWRlbnRpZmllck51bWJlciwgInsiLCBp
ZGVudGlmaWVycygpW2RhdGEuaWRlbnRpZmllck51bWJlcl0sICJ9Iik7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLnZhcmlhbnRzLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoZGF0YS52YXJpYW50c1tpXSwgY29udGV4dCkp
OworICAgIH0KICAgICBpZiAobm9kZS0+aGFzTWF0Y2hTdHJ1Y3R1cmVEYXRhKCkpIHsKICAgICAg
ICAgZm9yIChNYXRjaFN0cnVjdHVyZVZhcmlhbnQmIHZhcmlhbnQgOiBub2RlLT5tYXRjaFN0cnVj
dHVyZURhdGEoKS52YXJpYW50cykKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250
ZXh0KCp2YXJpYW50LnN0cnVjdHVyZS5nZXQoKSwgY29udGV4dCksICI9PiIsIHZhcmlhbnQucmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA5NDdlZmFhYmE5ZTY0
OTZiM2IwNWM2ZjU1MTQyYWI3Yzc3YjViNWEyLi4yYzI1MTk2ZmIwNWM0OTc3OTRiNWRkZmM2NjFk
Yzc3ZmYxYTBlMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC0xMTAw
LDYgKzExMDAsNyBAQCBwdWJsaWM6CiAgICAgQmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsK
ICAgICBCYWc8TXVsdGlHZXRCeU9mZnNldERhdGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAg
ICAgQmFnPE11bHRpUHV0QnlPZmZzZXREYXRhPiBtX211bHRpUHV0QnlPZmZzZXREYXRhOworICAg
IEJhZzxNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YT4gbV9tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YTsK
ICAgICBCYWc8TWF0Y2hTdHJ1Y3R1cmVEYXRhPiBtX21hdGNoU3RydWN0dXJlRGF0YTsKICAgICBC
YWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OwogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggYjkyODgxMGUxMDE1NTNiMTlhZjUx
MzQ0MmMwM2ViZWVjMDQ4MGYyYi4uMWNjYThiMmFjNDFjYmU3ZjQ5NmQzYzk2YTdiOGRkMTAwMDJk
NTg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDks
NiArMTA5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBT
dHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAppbmRleCBkY2IyYjU5ZGNh
Y2JiMjE5M2E4MmEwYjk3MzMzOTlmMDU3NDJhNDM4Li5mNzNhZjYwMDExYzE1MDFkMDgwYjFlZTA2
YmM3YjBhYTY1YzM2ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKQEAg
LTU3LDYgKzU3LDE1IEBAIGJvb2wgTXVsdGlQdXRCeU9mZnNldERhdGE6OnJlYWxsb2NhdGVzU3Rv
cmFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIE11bHRpRGVsZXRlQnlP
ZmZzZXREYXRhOjp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSB2YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgaWYgKHZhcmlhbnRzW2ldLndy
aXRlc1N0cnVjdHVyZXMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQnJhbmNoVGFyZ2V0OjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgaWYgKCFibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKaW5kZXggYmM3Y2ZiMTJkMGE4ZTJkMzJlMjcyOTdmNzQ4YTY1NWUzNTE3MjY3Ni4uYWFjM2E2
MzdhMDk0MTY2NDU0NGM5MTliYjc0NmUwYWQ1N2I5ZjQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJERkdUcmFuc2l0aW9uLmgi
CiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0
YS5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiR2V0QnlJZFZh
cmlhbnQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIK
QEAgLTkyLDYgKzkzLDEzIEBAIHN0cnVjdCBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSB7CiAgICAgYm9v
bCByZWFsbG9jYXRlc1N0b3JhZ2UoKSBjb25zdDsKIH07CiAKK3N0cnVjdCBNdWx0aURlbGV0ZUJ5
T2Zmc2V0RGF0YSB7CisgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcjsKKyAgICBWZWN0b3I8
RGVsZXRlQnlJZFZhcmlhbnQsIDI+IHZhcmlhbnRzOworCisgICAgYm9vbCB3cml0ZXNTdHJ1Y3R1
cmVzKCkgY29uc3Q7Cit9OworCiBzdHJ1Y3QgTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50IHsKICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZTsKICAgICBib29sIHJlc3VsdDsKQEAgLTIwMjks
NiArMjAzNywxNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChoYXNNdWx0aVB1dEJ5T2Zmc2V0
RGF0YSgpKTsKICAgICAgICAgcmV0dXJuICptX29wSW5mby5hczxNdWx0aVB1dEJ5T2Zmc2V0RGF0
YSo+KCk7CiAgICAgfQorCisgICAgYm9vbCBoYXNNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpCisg
ICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OworICAgIH0K
KworICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBtdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgp
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEoKSk7Cisg
ICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8TXVsdGlEZWxldGVCeU9mZnNldERhdGEqPigpOwor
ICAgIH0KICAgICAKICAgICBib29sIGhhc01hdGNoU3RydWN0dXJlRGF0YSgpCiAgICAgewpAQCAt
Mjk5MSw2ICszMDEwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFB1
dEJ5SWRTdGF0dXMqPigpOwogICAgIH0KIAorICAgIGJvb2wgaGFzRGVsZXRlQnlTdGF0dXMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyRGVsZXRlQnlTdGF0dXM7CisgICAg
fQorCisgICAgRGVsZXRlQnlTdGF0dXMqIGRlbGV0ZUJ5U3RhdHVzKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNEZWxldGVCeVN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFz
PERlbGV0ZUJ5U3RhdHVzKj4oKTsKKyAgICB9CisKICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmlu
dFN0cmVhbSYgb3V0KQogICAgIHsKICAgICAgICAgaWYgKCFjaGlsZDEoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAzZmVmNmIzODE4NTNkZDVlNzJjOThhNGYy
OGI5MGJhZmY2YzZiZTRhLi43ODM1MjhlYTU0NTZiZmVkM2EyYTFhODU1ODljZTJkOGEyMzljNjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yNTIsNiArMjUy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKE11bHRpR2V0
QnlPZmZzZXQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQ
dXRCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE11bHRpUHV0QnlPZmZz
ZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QXJyYXlMZW5n
dGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFZlY3Rvckxlbmd0aCwgTm9kZVJl
c3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQsIE5vZGVSZXN1
bHRJbnQzMikgXApAQCAtNTI3LDYgKzUyOCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKICAgICBtYWNybyhGaWx0ZXJHZXRCeVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhG
aWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIC8qIERhdGEgdmll
dyBhY2Nlc3MgKi8gXAogICAgIG1hY3JvKERhdGFWaWV3R2V0SW50LCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZVJlc3VsdEpTKSAvKiBUaGUgZ2V0cyBhcmUgbXVzdCBnZW5lcmF0ZSBmb3Igbm93IGJl
Y2F1c2UgdGhleSBkbyBib3VuZHMgY2hlY2tzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEZs
b2F0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3VsdERvdWJsZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAKaW5kZXggMDVhY2RmMjM4NzY5NzNmODhlODJiOWE3M2IzNDllZTc3OWI1Yjk4
NC4uZDAwZWE2MWVhMjk1ZDE2NzAzZjU2NjU2OGZhZTk5NzE2NTFhMTE4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCkBAIC0xMjIwLDYgKzEyMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKQEAg
LTI1NzAsNiArMjU3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJH
ZXRCeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmVXaXRob3V0Q2hlY2tzKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4NThiMzhjMTZhNjVhOGM4ZWJkYjlkNDM3
MDEyODM0NzJhNTBhLi44ZjE5MjYwODA1NjY5NDdiYWJhMDJmMTc3NmI1NDA5NGIxMGUwYmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTg0LDYgKzk4NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBEZWxldGVCeUlk
OgorICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgICAgIGNhc2UgTG9naWNh
bE5vdDoKICAgICAgICAgY2FzZSBDb21wYXJlTGVzczoKICAgICAgICAgY2FzZSBDb21wYXJlTGVz
c0VxOgpAQCAtMTM5NSw2ICsxMzk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJH
ZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBj
YXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1
czoKICAgICAgICAgY2FzZSBDbGVhckNhdGNoTG9jYWxzOgogICAgICAgICBjYXNlIERhdGFWaWV3
U2V0OgogICAgICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBiYWRmZTFiMmQxNDI5YjJlMDU2NGU2
MDFhMGM3ZmM5NjY0YjU1ZWFjLi5kNmU3YzllMzA4NTcyMjRjODI1ODU2ODJjYWI2ZDA3YWU3ZDFl
MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApA
QCAtMzYxLDYgKzM2MSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYg
c3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBGaWx0
ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGVzZSB0byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFu
IHdoZXJlIHdlIHB1dCB0aGVtLCBzaW5jZSB3ZSB3YW50IHRoZW0KICAgICAgICAgLy8gdG8gY2Fw
dHVyZSAicHJvZmlsaW5nIiBhdCB0aGUgcG9pbnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVz
ZXIgcHV0IHRoZW0uCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYwOCw2ICs2MDksNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6CiAgICAg
Y2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBN
dWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0RW51bWVyYWJsZUxlbmd0aDoKICAgICBj
YXNlIEhhc0dlbmVyaWNQcm9wZXJ0eToKICAgICBjYXNlIEhhc1N0cnVjdHVyZVByb3BlcnR5Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggMTI5MGQxNzk3MDNlODY3MDI2ZjMwMmJjODBlNzJhMDI1ZjY4YmQyNC4uOGRh
YjNkMDRiYzAyZWJhZjYwODgzNWE0MWIzMTkyMjkxNTgxYjc0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MTkw
LDYgKzQxOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDIwOCw2ICs0MjA5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhJ
TXVsOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZz
ZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxs
OgogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggYzU3YTU0ZjVhZGRkNDU0YmM0NDY5MmU1YjRlNTg3YmYwNGE5ZjFkOS4uYjg3ZjY4NzIyNzU4
MDNiOTU1YjhkYTBkYjZiNzc5Yzk0NWQ2ZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MjU1LDYgKzUyNTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJH
ZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAg
bV9pbnRlcnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKICAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTI2OSw2ICs1MjcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhJTXVsOgogICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBN
dWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgRmlhdEludDUyOgogICAgIGNhc2UgQ2hlY2tC
YWRDZWxsOgogICAgIGNhc2UgQm90dG9tVmFsdWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAppbmRleCA3YzdhYmU4
M2UyM2E1ZDg4YTMyMDgzYTUwZWRmMzRkMzZjZDYzNjliLi45MmQwYzhmMWM0NTYzNzM5MGMwNjM0
YTgxNTgyNDI4NWU5N2EzZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKQEAgLTI4Nyw2ICsyODcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zm
c2V0OgorICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQgdGhlc2UgdXNlcy4KICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzYyLDYgKzM2Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICAgICAgICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKICAgICAgICAgICAgICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6
CisgICAgICAgICAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgICAgICAgICAg
ICAgICAgICAvLyBEb24ndCBjb3VudCB0aGVzZSB1c2VzLgogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFsaWRhdGUuY3BwCmluZGV4IDNhNzc3MTE0NWM3NjBiMzQ4MmU3ZTFhYzliNjQ5OTAxZGZmMTlk
NWEuLjBkNjVkOGY4OWFlYzNkNTk0MmQyY2Y4M2Q2Y2VkOGExYmZmMzk4Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCkBAIC0zMTEsNiArMzExLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIXZhcmlhbnQu
b2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT5kZmdTaG91bGRXYXRjaCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZWxldGVCeUlkVmFyaWFu
dCYgdmFyaWFudCA9IG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07
CisgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpIHx8ICF2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5kZmdTaG91bGRXYXRjaCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgICAgICAg
ICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1
Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3IgSlNBcnJheS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmlu
ZGV4IDc0ZWE2MThlOTAxMTI5YTU3ZTJjODNiYjg5MmE3NWI3YjgwNjMzYjcuLjBjMzVhNTM2NWNj
NDZlZjNjNzg5OTQ4ZjRkMmU2MGNjZjAxNzZiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtMTk4LDYg
KzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEdldEJ5T2Zm
c2V0OiB7CkBAIC0zOTksNiArNDAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6
CiAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2Ug
RmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSA9PSBjYW5kaWRhdGUpCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSht
X2dyYXBoKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA1YzY5ZDFkMzhjMWM2MTA1OTlmZDMwMjk5
NzM0MzYwY2IyMjdhY2IyLi5lMWY1ODlmMjczNDNiZmY5MzYyMTYxODhkYWUzYjVjODYzNjg2OGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yMzMsNiArMjMzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAg
ICAgY2FzZSBUb1ByaW1pdGl2ZToKICAgICBjYXNlIFRvUHJvcGVydHlLZXk6CiAgICAgY2FzZSBU
aHJvdzoKQEAgLTM5Miw2ICszOTMsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENy
ZWF0ZVByb21pc2U6CiAgICAgY2FzZSBDcmVhdGVHZW5lcmF0b3I6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNzczYTAwNmUwODc0MDk3NGYw
MzNlNmMyZDgyZGVhYzhiMmZkYzU0Ny4uMzJmOWI4ODM2NzFiY2I5Y2MzMjU0MDJiMjM3YjE4MWZl
ZjNkYTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcApAQCAtMTE3Nyw2ICsxMTc3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNdWx0aVB1
dEJ5T2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZU11bHRpUHV0QnlPZmZzZXQoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CisgICAgICAg
ICAgICBjb21waWxlTXVsdGlEZWxldGVCeU9mZnNldCgpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlTWF0Y2hTdHJ1
Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2OSw2ICsxNTcyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgIGNvbXBpbGVGaWx0ZXJJQ1N0
YXR1cygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGF0ZUdldEludDMyT3JO
YU46CkBAIC04MTI4LDYgKzgxMzIsMTA2IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CisKKyAgICB2b2lk
IGNvbXBpbGVNdWx0aURlbGV0ZUJ5T2Zmc2V0KCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNl
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTXVsdGlEZWxldGVCeU9mZnNl
dERhdGEmIGRhdGEgPSBtX25vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCk7CisKKyAgICAg
ICAgdW5zaWduZWQgbWlzc0NvbmZpZ3VyYWJsZSA9IDA7CisgICAgICAgIHVuc2lnbmVkIG1pc3NO
b25jb25maWd1cmFibGUgPSAwOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFy
aWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJp
YW50ID0gZGF0YS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIGlmICghdmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIGlmICh2YXJpYW50LnJlc3VsdCgpKQorICAgICAg
ICAgICAgICAgICAgICArK21pc3NDb25maWd1cmFibGU7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICArK21pc3NOb25jb25maWd1cmFibGU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCB1bmlxdWVDYXNlQ291bnQgPSBkYXRhLnZh
cmlhbnRzLnNpemUoKTsKKyAgICAgICAgaWYgKG1pc3NDb25maWd1cmFibGUpCisgICAgICAgICAg
ICB1bmlxdWVDYXNlQ291bnQgLT0gbWlzc0NvbmZpZ3VyYWJsZSAtIDE7CisgICAgICAgIGlmICht
aXNzTm9uY29uZmlndXJhYmxlKQorICAgICAgICAgICAgdW5pcXVlQ2FzZUNvdW50IC09IG1pc3NO
b25jb25maWd1cmFibGUgLSAxOworICAgICAgICBpbnQgdHJ1ZUJsb2NrID0gbWlzc0NvbmZpZ3Vy
YWJsZSA/IHVuaXF1ZUNhc2VDb3VudCAtIDEgOiAtMTsKKyAgICAgICAgaW50IGZhbHNlQmxvY2sg
PSBtaXNzTm9uY29uZmlndXJhYmxlID8gdW5pcXVlQ2FzZUNvdW50IC0gMSAtICEhbWlzc0NvbmZp
Z3VyYWJsZSA6IC0xOworCisgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaywgMj4gYmxvY2tzKHVu
aXF1ZUNhc2VDb3VudCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2Nrcy5zaXplKCk7
IGktLTspCisgICAgICAgICAgICBibG9ja3NbaV0gPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICBMQmFzaWNCbG9jayBleGl0ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWZWN0b3I8U3dp
dGNoQ2FzZSwgMj4gY2FzZXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFzZVNl
dDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCksIGJsb2Nr
ID0gMDsgaS0tOykgeworICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRh
dGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICBiYXNlU2V0LmFkZChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgaWYgKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENh
c2Uod2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSksIGJsb2Nrc1tibG9jaysrXSwgV2VpZ2h0KDEp
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRj
aENhc2Uod2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSksIGJsb2Nrc1t2YXJpYW50LnJlc3VsdCgp
ID8gdHJ1ZUJsb2NrIDogZmFsc2VCbG9ja10sIFdlaWdodCgxKSkpOworICAgICAgICB9CisgICAg
ICAgIGJvb2wgc3RydWN0dXJlc0NoZWNrZWQgPSBtX2ludGVycHJldGVyLmZvck5vZGUobV9ub2Rl
LT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihiYXNlU2V0KTsKKyAgICAgICAgZW1p
dFN3aXRjaEZvck11bHRpQnlPZmZzZXQoYmFzZSwgc3RydWN0dXJlc0NoZWNrZWQsIGNhc2VzLCBl
eGl0KTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2Nr
OworCisgICAgICAgIFZlY3RvcjxWYWx1ZUZyb21CbG9jaywgMj4gcmVzdWx0czsKKworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKSwgYmxvY2sgPSAwOyBpLS07
KSB7CisgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50ID0gZGF0YS52YXJpYW50
c1tpXTsKKyAgICAgICAgICAgIGlmICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW2Js
b2NrXSwgYmxvY2sgKyAxIDwgYmxvY2tzLnNpemUoKSA/IGJsb2Nrc1tibG9jayArIDFdIDogZXhp
dCk7CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAg
ICAgICAgICAgTFZhbHVlIHN0b3JhZ2U7CisKKyAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVP
ZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBi
YXNlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSA9
IG1fb3V0LmxvYWRQdHIoYmFzZSwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpOworCisgICAg
ICAgICAgICAgICAgc3RvcmVQcm9wZXJ0eShtX291dC5pbnQ2NFplcm8sIHN0b3JhZ2UsIGRhdGEu
aWRlbnRpZmllck51bWJlciwgdmFyaWFudC5vZmZzZXQoKSk7CisKKyAgICAgICAgICAgICAgICBB
U1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gdmFyaWFudC5u
ZXdTdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVCh2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IHZh
cmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpOworICAg
ICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5
cGUoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgbV9vdXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVj
dHVyZUlEKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkp
LCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcih2YXJpYW50LnJlc3VsdCgpID8g
bV9vdXQuYm9vbGVhblRydWUgOiBtX291dC5ib29sZWFuRmFsc2UpKTsKKyAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgICAgICsrYmxvY2s7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobWlzc05vbmNvbmZpZ3VyYWJsZSkgeworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oYmxvY2tzW2ZhbHNlQmxvY2tdKTsKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtaXNzQ29uZmlndXJh
YmxlKSB7CisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NbdHJ1ZUJsb2NrXSwgZXhp
dCk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuYm9vbGVh
blRydWUpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGV4aXQsIGNvbnRpbnVhdGlvbik7CisgICAgICAg
IGlmICghc3RydWN0dXJlc0NoZWNrZWQpCisgICAgICAgICAgICBzcGVjdWxhdGUoQmFkQ2FjaGUs
IG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYm9vbGVhblRydWUpOworICAgICAgICBtX291dC51
bnJlYWNoYWJsZSgpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOworICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShJbnQzMiwgcmVzdWx0cykpOwor
ICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVNYXRjaFN0cnVjdHVyZSgpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5oCmluZGV4
IGZmZGVlMTdhZTI0ZTVmZjQ5NjljMWQ0MmNmMDkxYzFjMWI5NDg1NzkuLjA5MjUzOGNmNWNjMDZk
YTZhOWIxNjZmNzIyN2QxMGEzMmI2Y2I3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkhlYXBBbmFseXplci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBhMDliMDU2NWVhMjZiNDMwZTM5
MmNjNGM0Yjg0YWRkNzViYzNlNGM3Li4wMTkyMjBjNDU1MWYxMzQ0MDViNGYxMmY5MjViNmRhZjlj
NDU2YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtNDQ3LDExICs0NDcsMTEg
QEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHko
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Kj4oY2VsbCk7CiAKLSAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAg
ICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRydWUsIHR5cGVkQXJyYXlC
dWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwotCi0gICAgaWYgKHBhcnNlSW5kZXgo
cHJvcGVydHlOYW1lKSkKKyAgICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAg
ICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgICAgICByZXR1cm4gdHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRydWUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVu
RGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAg
IAogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKaW5kZXggNTIwOGFjZGJiZGZmODcyNTBjMjJjYWIwYzRlZmQ2MzQxMGRh
ZGU3ZC4uMjcxZTgxYzFhNzAwMDkyMzcxOWUxYTliODk0MzU2M2NmNjgwNGEzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMjAxMSwxMiArMjAxMSw3
IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVyCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
c3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQsICZkZWZlcnJlZFdhdGNocG9pbnRGaXJlKTsKICAg
ICAgICAgICAgIHNsb3Quc2V0SGl0KG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoIXN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpICYmICFzdHJ1Y3R1cmUtPmhhc0luZGV4aW5nSGVhZGVyKHRoaXNPYmpl
Y3QpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPm1fYnV0dGVyZmx5KTsK
LSAgICAgICAgICAgICAgICB0aGlzT2JqZWN0LT5udWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5
KHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpLCBudWxscHRyKTsKLSAgICAgICAgICAgICAg
ICBvZmZzZXQgPSBpbnZhbGlkT2Zmc2V0OwotICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPm1heE9mZnNldCgpID09IGludmFsaWRPZmZzZXQpOwotICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCAhdGhpc09iamVj
dC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgICAgICB0aGlz
T2JqZWN0LT5zZXRTdHJ1Y3R1cmUodm0sIHN0cnVjdHVyZSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA3Njc1OWI2NTAxYzg0NjQw
NDlkOWFlYTkzZTljYTNmYzNlMTMwNzgwLi4xZGJkYzBjMjcxY2IzMjFiYmZiOGUxMzQzYjkyMWQ2
NGZkOTI5NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApA
QCAtNDc4LDEwICs0NzgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB8fCBoaWphY2tzSW5kZXhp
bmdIZWFkZXIoKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlcihjb25z
dCBKU0NlbGwqKSBjb25zdDsKLSAgICBib29sIG1heUhhdmVJbmRleGluZ0hlYWRlcigpIGNvbnN0
OwotICAgIGJvb2wgY2FuQ2FjaGVEZWxldGVJQygpIGNvbnN0OwotICAgIAorICAgIGJvb2wgaGFz
SW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7ICAgIAogICAgIGJvb2wgbWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAK
ICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoVk0mLCBQcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCmluZGV4IGIyZWQ4NThi
OGY2ODcxZDU3MTFmMDg5NDZkOTQxZTk2MjNhYWEwZWYuLjVmYTcwMTNjYjdmZDQ4YWJlZGQ4OTJk
NmI5YzFiOTdhMTE1MTQ3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKQEAgLTIyOCwyMiArMjI4LDYgQEAgaW5saW5lIGJvb2wgU3Ry
dWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlcihjb25zdCBKU0NlbGwqIGNlbGwpIGNvbnN0CiAgICAg
cmV0dXJuIGpzQ2FzdDxjb25zdCBKU0FycmF5QnVmZmVyVmlldyo+KGNlbGwpLT5tb2RlKCkgPT0g
V2FzdGVmdWxUeXBlZEFycmF5OwogfQogCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6Om1heUhhdmVJ
bmRleGluZ0hlYWRlcigpIGNvbnN0Ci17Ci0gICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGlu
ZGV4aW5nVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWlzVHlwZWRW
aWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmU6
OmNhbkNhY2hlRGVsZXRlSUMoKSBjb25zdAotewotICAgIHJldHVybiAhaXNUeXBlZFZpZXcodHlw
ZWRBcnJheVR5cGVGb3JUeXBlKG1fYmxvYi50eXBlKCkpKTsKLX0KLQogaW5saW5lIGJvb2wgU3Ry
dWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0KQogewogICAgIHJldHVybiB0eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQoKSAmJiBnbG9iYWxPYmplY3QoKSA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBiYTUxMjIwM2Mw
YzBmNmE5YTEzMzA5MjFjNjY5YWQ2Nzc3M2UzNjFiLi5jY2U1MGU5NDA4YWU4OTE2YWYxYmMyMGQ2
MGM1OTM0ODY2YjgxNTM4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTAzLTEzICBKdXN0aW4gTWljaGF1
ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBkZWxldGVCeUlk
IHRvIGJlIGNhY2hlZCBpbiB0aGUgREZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDg2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0
aS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlv
bi1zaW5raW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChub0lubGlu
ZS5hc3NlcnQuYmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3guZG9BbGxvYzEp
OgorICAgICAgICAobm9JbmxpbmUuZG9BbGxvYzEpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9wb2x5dmFyaWFudC1kZWxldGUtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
KToKKyAgICAgICAgKGJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LnBvbHl2
YXJpYW50KToKKyAgICAgICAgKGRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2Mx
LmRvQWxsb2MyKToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2MyKToKKyAgICAgICAgKiBzdHJl
c3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0
KToKKyAgICAgICAgKG5vSW5saW5lLmFzc2VydC5hc3NlcnRfdGhyb3dzKToKKyAgICAgICAgKG5v
SW5saW5lLmFzc2VydF90aHJvd3MuYmxhY2tib3gpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2ti
b3gudGVzdFNpbmdsZVN0cnVjdHVyZS5kb0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5ibGFj
a2JveC50ZXN0U2luZ2xlU3RydWN0dXJlKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVT
dHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS5kb0RlbGV0ZTIpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZS50ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlLmRv
QWxsb2MyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGlu
ZVNpbmdsZVN0cnVjdHVyZSk6CisgICAgICAgIChub0lubGluZS50ZXN0SW5saW5lU2luZ2xlU3Ry
dWN0dXJlLnRlc3RFeGl0LmRvRGVsZXRlMyk6CisgICAgICAgIChub0lubGluZS50ZXN0SW5saW5l
U2luZ2xlU3RydWN0dXJlLnRlc3RFeGl0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RFeGl0LnRl
c3RTaW5nbGVTdHJ1Y3R1cmVNaXNzLmRvQWxsb2M0KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RF
eGl0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5n
bGVTdHJ1Y3R1cmVNaXNzLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0LnN0cmluZ19hcHBl
YXJlZF9oZXJlLmRvQWxsb2M1KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1
cmVNaXNzLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9u
Q29uZmlndXJhYmxlLmRvQWxsb2M2KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1
Y3R1cmVNaXNzU3RyaWN0LnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxl
LnRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eS5kb0FsbG9jNyk6CisgICAgICAgIChub0lubGluZS50
ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZS50ZXN0U2luZ2xlU3RydWN0dXJl
RW1wdHkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5LnRlc3RQ
b2x5bW9ycGhpYy5kb0RlbGV0ZTgpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVj
dHVyZUVtcHR5LnRlc3RQb2x5bW9ycGhpYyk6CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1v
cnBoaWMudGVzdFBvbHl2YXJpYW50LmRvRGVsZXRlOSk6CisgICAgICAgIChub0lubGluZS50ZXN0
UG9seW1vcnBoaWMudGVzdFBvbHl2YXJpYW50LnBvbHl2YXJpYW50KToKKyAgICAgICAgKG5vSW5s
aW5lLnRlc3RQb2x5bW9ycGhpYy50ZXN0UG9seXZhcmlhbnQpOgorICAgICAgICAobm9JbmxpbmUu
dGVzdFBvbHl2YXJpYW50LnRlc3RDb25zdGFudEZvbGRpbmcuZG9EZWxldGUxMCk6CisgICAgICAg
IChub0lubGluZS50ZXN0UG9seXZhcmlhbnQudGVzdENvbnN0YW50Rm9sZGluZyk6CisgICAgICAg
IChub0lubGluZS50ZXN0Q29uc3RhbnRGb2xkaW5nLnRlc3RPYmplY3RTaW5raW5nLmRvQWxsb2Mx
MSk6CisgICAgICAgIChub0lubGluZS50ZXN0Q29uc3RhbnRGb2xkaW5nLnRlc3RPYmplY3RTaW5r
aW5nKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmplY3RTaW5raW5nLnRlc3RQcm94eS5kb0Fs
bG9jMTIpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iamVjdFNpbmtpbmcudGVzdFByb3h5Lm5v
SW5saW5lLmRvRGVsZXRlMTIpOgorICAgICAgICAobm9JbmxpbmUudGVzdE9iamVjdFNpbmtpbmcu
dGVzdFByb3h5KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQcm94eS50ZXN0VHlwZWRBcnJheS5k
b0RlbGV0ZTEyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQcm94eS50ZXN0VHlwZWRBcnJheSk6
CisgICAgICAgIChub0lubGluZS50ZXN0VHlwZWRBcnJheS50ZXN0TWlzc01peGVkLmRvRGVsZXRl
MTMpOgorICAgICAgICAobm9JbmxpbmUudGVzdFR5cGVkQXJyYXkudGVzdE1pc3NNaXhlZCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0TWlzc01peGVkLnRlc3RNaXNzTm9uTWl4ZWQuZG9EZWxldGUx
NCk6CisgICAgICAgIChub0lubGluZS50ZXN0TWlzc01peGVkLnRlc3RNaXNzTm9uTWl4ZWQpOgor
ICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NOb25NaXhlZC50ZXN0QnlWYWwuZG9EZWxldGUxNSk6
CisgICAgICAgIChub0lubGluZS50ZXN0TWlzc05vbk1peGVkLnRlc3RCeVZhbCk6CisKIDIwMjAt
MDQtMDMgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmUtZW5h
YmxlIHByZXZpb3VzbHkgc2tpcHBlZCBhcm0gdGVzdHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1zaW5raW5nLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA2NjM0NjRmMzE3N2NiNTlmYTZjZjkyNGUxNDIyNzQ2NTk0MDQxMzUKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHkt
YWxsb2NhdGlvbi1zaW5raW5nLmpzCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCBza2lwIGlmICRtb2Rl
bCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24p
IHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRp
b24gZmFpbGVkIikKK30KK25vSW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYmxhY2tib3goeCkg
eworICAgIHJldHVybiB4Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gZG9BbGxv
YzEoKSB7CisgICAgbGV0IG9iaiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLnkgPSA3Cisg
ICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAg
IHJldHVybiBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzEpCisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgNTAwMDAwMDA7ICsraSkgeworICAgIGRvQWxsb2MxKCkKK30KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZjdjYmNiZDY5OWIzYjAzMjY3Y2IwMWYxMjdhMGY1MjJjMWViNWQzCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3Bl
cnR5LmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0
Y2ggU2VyaWVzIDMiCisKK2Z1bmN0aW9uIGFzc2VydChjb25kaXRpb24pIHsKKyAgICBpZiAoIWNv
bmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJhc3NlcnRpb24gZmFpbGVkIikKK30K
KworZnVuY3Rpb24gYmxhY2tib3goeCkgeworICAgIHJldHVybiB4Cit9Citub0lubGluZShibGFj
a2JveCkKKworZnVuY3Rpb24gcG9seXZhcmlhbnQoeCkgeworICAgIGFzc2VydChkZWxldGUgeC54
KQorfQorCitmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmou
eCA9IDUKKyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQorICAgIHBv
bHl2YXJpYW50KG9iaikKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2MxKQor
CitmdW5jdGlvbiBkb0FsbG9jMigpIHsKKyAgICBsZXQgb2JqID0ge30KKyAgICBvYmoueCA9IDUK
KyAgICBvYmouYiA9IDkKKyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55
KQorICAgIHBvbHl2YXJpYW50KG9iaikKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRv
QWxsb2MyKQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDAwOyArK2kpIHsKKyAgICBkb0Fs
bG9jMSgpCisgICAgZG9BbGxvYzIoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZGVs
ZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVy
dHktZGZnLWlubGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2JlZTdiY2MxMmM5ZDJkZDdhNDI4MTY5NTE1
MGYzZmZkYjM2YTEyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZGVsZXRlLXBy
b3BlcnR5LWRmZy1pbmxpbmUuanMKQEAgLTAsMCArMSw0MDkgQEAKK2Z1bmN0aW9uIGFzc2VydChj
b25kaXRpb24pIHsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJhc3NlcnRpb24gZmFpbGVkIikKK30KK25vSW5saW5lKGFzc2VydCkKKworZnVuY3Rpb24gYXNz
ZXJ0X3Rocm93cyhmKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZigpCisgICAgfSBjYXRjaCB7Cisg
ICAgICAgIHJldHVybgorICAgIH0KKyAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWls
ZWQiKQorfQorbm9JbmxpbmUoYXNzZXJ0X3Rocm93cykKKworZnVuY3Rpb24gYmxhY2tib3goeCkg
eworICAgIHJldHVybiB4Cit9Citub0lubGluZShibGFja2JveCkKKworZnVuY3Rpb24gdGVzdFNp
bmdsZVN0cnVjdHVyZSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICAgICAgbGV0
IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAg
b2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueCkKKyAg
ICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MxKQorCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzEoKQor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RJ
bmxpbmVTaW5nbGVTdHJ1Y3R1cmUoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUyKG8pIHsKKyAg
ICAgICAgYXNzZXJ0KGRlbGV0ZSBvLngpCisgICAgfQorCisgICAgZnVuY3Rpb24gZG9BbGxvYzIo
KSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAgICAgb2Jq
LnkgPSA3CisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGRvRGVsZXRl
MihvYmopCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9j
MikKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBkb0RlbGV0
ZTIoeyBpLCBmOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGksIGU6IDQgfSkKKyAgICAgICAg
ZG9EZWxldGUyKHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBjOiA0IH0pCisg
ICAgICAgIGRvRGVsZXRlMih7IGksIGI6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYTog
NCB9KQorICAgICAgICBkb0FsbG9jMigpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzIoKQorICAgIH0KK30KK25vSW5saW5l
KHRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUpCisKK2Z1bmN0aW9uIHRlc3RFeGl0KCkgeworICAg
IGZ1bmN0aW9uIGRvRGVsZXRlMyhvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkK
KyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUzKQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0pCisgICAgfQor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7
IGksIGY6IDQgfSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZTogNCB9KQorICAgICAgICBkb0Rl
bGV0ZTMoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGM6IDQgfSkKKyAgICAg
ICAgZG9EZWxldGUzKHsgaSwgYjogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0p
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAg
ICAgZG9EZWxldGUzKHsgaSwgYTogNCB9KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RFeGl0KQor
CitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlTWlzcygpIHsKKyAgICBmdW5jdGlvbiBkb0Fs
bG9jNCgpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gNQorICAgICAg
ICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNz
ZXJ0KGRlbGV0ZSBvYmoueikKKyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5s
aW5lKGRvQWxsb2M0KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgZG9BbGxvYzQoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1
cmVNaXNzKQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpIHsKKyAg
ICAidXNlIHN0cmljdCIKKworICAgIGZ1bmN0aW9uIGRvQWxsb2M1KCkgeworICAgICAgICBsZXQg
b2JqID0ge30KKyAgICAgICAgb2JqLnkgPSA1CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShvYmosICJ4IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAg
ICAgIHZhbHVlOiA0MQorICAgICAgICB9KQorICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55
KQorICAgICAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBvYmoueCkKKyAgICAgICAgcmV0
dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M1KQorCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzUoKQorICAgIH0KK30K
K25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KQorCitmdW5jdGlvbiB0ZXN0
U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZSgpIHsKKyAgICBmdW5jdGlvbiBkb0Fs
bG9jNigpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai55ID0gNQorICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YWJsZTogZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAg
b2JqLnkgPSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0KCEoZGVsZXRlIG9iai54KSkK
KyAgICAgICAgcmV0dXJuIG9iai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2M2KQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9BbGxvYzYo
KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJh
YmxlKQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkoKSB7CisgICAgZnVuY3Rp
b24gZG9BbGxvYzcoKSB7CisgICAgICAgIGxldCBvYmogPSB7IGE6IDEsIGI6IDJ9CisgICAgICAg
IG9ialsxXSA9IDUKKyAgICAgICAgZGVsZXRlIG9ialsxXQorICAgICAgICBibGFja2JveCgoKSA9
PiBvYmoueCA9IDUpKCkKKyAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09
IDMpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLmEpCisgICAgICAgIGFzc2VydChkZWxldGUg
b2JqLmIpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgICAgIGFzc2VydChPYmpl
Y3Qua2V5cyhvYmopLmxlbmd0aCA9PSAwKQorICAgICAgICBvYmoueCA9IDcKKyAgICAgICAgcmV0
dXJuIG9iagorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jNykKKworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2M3KCkKKyAgICB9Cit9Citu
b0lubGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkpCisKK2Z1bmN0aW9uIHRlc3RQb2x5bW9y
cGhpYygpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTgob2JqKSB7CisgICAgICAgIGFzc2VydChk
ZWxldGUgb2JqLnkpCisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisgICAgbm9JbmxpbmUoZG9E
ZWxldGU4KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgZG9E
ZWxldGU4KHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgZjogNCB9KQorICAgICAgICBhc3Nl
cnQoZG9EZWxldGU4KHsgaSwgZTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAg
ICBkb0RlbGV0ZTgoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOCh7IGksIGM6IDQgfSkK
KyAgICAgICAgZG9EZWxldGU4KHsgaSwgYjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU4
KHsgaSwgYTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgIH0KKworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGksIGE6
IDQgfSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seW1vcnBoaWMpCisKK2Z1bmN0aW9uIHRl
c3RQb2x5dmFyaWFudCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTkob2JqKSB7CisgICAgICAg
IGFzc2VydChkZWxldGUgb2JqLnkpCisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBwb2x5dmFyaWFudChvYmopIHsKKyAgICAgICAgcmV0dXJuIGRvRGVsZXRlOShvYmop
CisgICAgfQorICAgIG5vSW5saW5lKHBvbHl2YXJpYW50KQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCA1OyArK2kpIHsKKyAgICAgICAgcG9seXZhcmlhbnQoeyBpLCBhOiA0IH0pCisgICAgfQor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0
ZTkoeyBpLCBmOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTkoeyBpLCBlOiA0LCB5OiAx
MCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGQ6IDQgfSkKKyAg
ICAgICAgZG9EZWxldGU5KHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTkoeyBpLCBiOiA0
IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTkoeyBpLCBhOiA0LCB5OiAxMCB9KS55ID09PSB1
bmRlZmluZWQpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kp
IHsKKyAgICAgICAgcG9seXZhcmlhbnQoeyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUo
dGVzdFBvbHl2YXJpYW50KQorCitmdW5jdGlvbiB0ZXN0Q29uc3RhbnRGb2xkaW5nKCkgeworICAg
IGZ1bmN0aW9uIGRvRGVsZXRlMTAob2JqKSB7CisgICAgICAgIGlmICgkdm0uZGZnVHJ1ZSgpKSB7
CisgICAgICAgICAgICBvYmogPSB7IGk6IDAsIGE6IDUsIHk6IDIwIH0KKyAgICAgICAgfQorICAg
ICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgICAgICBhc3NlcnQoKGRlbGV0ZSBvYmoueikg
KyA1ID09IDYpCisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxl
dGUxMCkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAg
IGFzc2VydChkb0RlbGV0ZTEwKHsgaSwgYTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQor
ICAgICAgICBkb0RlbGV0ZTEwKHsgaSwgZjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGUx
MCh7IGksIGU6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGUx
MCh7IGksIGQ6IDQgfSkKKyAgICAgICAgZG9EZWxldGUxMCh7IGksIGM6IDQgfSkKKyAgICAgICAg
ZG9EZWxldGUxMCh7IGksIGI6IDQgfSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Q29uc3RhbnRG
b2xkaW5nKQorCitmdW5jdGlvbiB0ZXN0T2JqZWN0U2lua2luZygpIHsKKyAgICBmdW5jdGlvbiBk
b0FsbG9jMTEoaSkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLnggPSAxCisg
ICAgICAgIG9iai55ID0gMgorICAgICAgICBpZiAoaSA9PSAwKQorICAgICAgICAgICAgb2JqLmEg
PSAzCisgICAgICAgIGVsc2UgaWYgKGkgPT0gMSkKKyAgICAgICAgICAgIG9iai5iID0gMworICAg
ICAgICBlbHNlIGlmIChpID09IDMpCisgICAgICAgICAgICBvYmouYyA9IDMKKyAgICAgICAgZGVs
ZXRlIG9iai54CisgICAgICAgIGFzc2VydCgoZGVsZXRlIG9iai54KSArIDUgPT0gNikKKyAgICAg
ICAgcmV0dXJuIG9iai55CisKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzExKQorCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGRvQWxs
b2MxMShpICUgMykgPT0gMikKKyAgICB9CisgICAgYXNzZXJ0KGRvQWxsb2MxMSg0KSA9PSAyKQor
fQorbm9JbmxpbmUodGVzdE9iamVjdFNpbmtpbmcpCisKK2Z1bmN0aW9uIHRlc3RQcm94eSgpIHsK
KyAgICBmdW5jdGlvbiBkb0FsbG9jMTIoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAg
ICBvYmoueCA9IDEKKyAgICAgICAgb2JqLmNvdW50ID0gMAorCisgICAgICAgIGNvbnN0IGhhbmRs
ZXIgPSB7CisgICAgICAgICAgZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKSB7CisgICAgICAg
ICAgICBhc3NlcnQocHJvcCA9PSAieiIpCisgICAgICAgICAgICBkZWxldGUgdGFyZ2V0LnoKKyAg
ICAgICAgICAgICsrb2JqLmNvdW50CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIG5ldyBQcm94eShvYmosIGhhbmRsZXIpCisKKyAgICB9CisgICAgbm9JbmxpbmUoZG9B
bGxvYzEyKQorCisgICAgZnVuY3Rpb24gZG9EZWxldGUxMihvYmopIHsKKyAgICAgICAgZGVsZXRl
IG9iai56CisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTIpCisKKyAgICBsZXQgZm9vID0g
ZG9BbGxvYzEyKCkKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAg
ICAgICBkb0RlbGV0ZTEyKGZvbykKKyAgICB9CisgICAgYXNzZXJ0KGZvby5jb3VudCA9IDEwMDAw
MDApCit9Citub0lubGluZSh0ZXN0UHJveHkpCisKK2Z1bmN0aW9uIHRlc3RUeXBlZEFycmF5KCkg
eworICAgIGZ1bmN0aW9uIGRvRGVsZXRlMTIob2JqKSB7CisgICAgICAgIG9iai5jb25zdHJ1Y3Rv
ciA9IG51bGwKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmouY29uc3RydWN0b3IpCisgICAgfQor
ICAgIG5vSW5saW5lKGRvRGVsZXRlMTIpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTEyKG5ldyBVaW50OEFycmF5KCkpCisgICAgfQor
CisgICAgbGV0IGZvbyA9IG5ldyBVaW50OEFycmF5KDEyKTsKKyAgICB0cmFuc2ZlckFycmF5QnVm
ZmVyKGZvby5idWZmZXIpCisgICAgZG9EZWxldGUxMihmb28pCisgICAgYXNzZXJ0X3Rocm93cygo
KSA9PiBkZWxldGUgZm9vWzBdKQorfQorbm9JbmxpbmUodGVzdFR5cGVkQXJyYXkpCisKK2Z1bmN0
aW9uIHRlc3RNaXNzTWl4ZWQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUxMyhvYmopIHsKKyAg
ICAgICAgcmV0dXJuIGRlbGV0ZSBvYmoueAorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEz
KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNz
ZXJ0KGRvRGVsZXRlMTMoeyB5OiA0IH0pKQorICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAgICBjb25maWd1cmFi
bGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0pCisgICAgICAgIGFz
c2VydCghZG9EZWxldGUxMyhmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RNaXNzTWl4ZWQp
CisKK2Z1bmN0aW9uIHRlc3RNaXNzTm9uTWl4ZWQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUx
NChvYmopIHsKKyAgICAgICAgcmV0dXJuIGRlbGV0ZSBvYmoueAorICAgIH0KKyAgICBub0lubGlu
ZShkb0RlbGV0ZTE0KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgbGV0IGZvbyA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28s
ICJ4IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZh
bHVlOiA0MQorICAgICAgICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTQoZm9vKSkKKwor
ICAgICAgICBmb28gPSB7IHk6IDQgfQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9v
LCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgICAgICB2
YWx1ZTogNDAKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0ZTE0KGZvbykpCisg
ICAgfQorfQorbm9JbmxpbmUodGVzdE1pc3NOb25NaXhlZCkKKworZnVuY3Rpb24gdGVzdEJ5VmFs
KCkgeworICAgIGZ1bmN0aW9uIGRvRGVsZXRlMTUob2JqKSB7CisgICAgICAgIHJldHVybiBkZWxl
dGUgb2JqWyJ4Il0KKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxNSkKKworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUxNSh7
IHk6IDQgfSkpCisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoZm9vLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAg
ICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0ZTE1
KGZvbykpCisKKyAgICAgICAgZm9vID0geyB4OiA0IH0KKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRl
MTUoZm9vKSkKKyAgICAgICAgYXNzZXJ0KGZvby54ID09IHVuZGVmaW5lZCkKKyAgICAgICAgZ2Mo
KQorICAgIH0KK30KK25vSW5saW5lKHRlc3RCeVZhbCkKKwordGVzdEJ5VmFsKCkKK3Rlc3RNaXNz
TWl4ZWQoKQordGVzdE1pc3NOb25NaXhlZCgpCit0ZXN0VHlwZWRBcnJheSgpCit0ZXN0UHJveHko
KQordGVzdFNpbmdsZVN0cnVjdHVyZSgpCit0ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKCkKK3Rl
c3RFeGl0KCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzKCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmVN
aXNzU3RyaWN0KCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29uZmlndXJhYmxlKCkKK3Rl
c3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eSgpCit0ZXN0UG9seW1vcnBoaWMoKQordGVzdFBvbHl2YXJp
YW50KCkKK3Rlc3RDb25zdGFudEZvbGRpbmcoKQordGVzdE9iamVjdFNpbmtpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395569</attachid>
            <date>2020-04-06 08:37:01 -0700</date>
            <delta_ts>2020-04-06 09:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200406113700.patch</filename>
            <type>text/plain</type>
            <size>101127</size>
            <attacher name="Justin Michaud">justin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjY3NzVlNGZmNmY2NjM2NDlmOWUyMGM1MDVhMmJlMTFhZDg5NjRjLi5hZDRkYTRiZDhmZjQyYWMw
MGI0NmMzZDBjYjNmZTE5ZTFkNzI3MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMDMtMTMgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFdoZW4g
d2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBzdHJ1
Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAgICAg
Y3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1cm5p
bmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMsCisg
ICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUgKG9y
IGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9naWMg
Zm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0eSB0
byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0aGUg
Y2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRlbGV0
ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBtaXNz
LCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKworICAg
ICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUgaWRl
bnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3Zl
cyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYgd2Ug
bmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFsc28g
Zml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1cyBv
ZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAgICAg
ICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2YgdGhp
cyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKworICAg
ICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlhbnQt
ZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3BlcnR5
LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0ZWNv
ZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZh
cmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJp
YW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1w
dFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3RydWN0
dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3Jl
Z2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0
ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6
b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om5l
d1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpyZXN1
bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2Zmc2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJvcGVydHlVbnNldCBjb25z
dCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBi
eXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpj
b21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6RGVsZXRl
QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzbG93VmVyc2lv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3Rh
dHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptYXJr
SWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01h
cC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAgICAo
SlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWNvcmRl
ZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3Rh
dHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6
bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoKKyAg
ICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFjaFZlY3Rvcik6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0ZUJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TXVsdGlEZWxldGVCeU9mZnNldERhdGE6Ondy
aXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Om11bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNo
ZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRp
ZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlIYXZl
SW5kZXhpbmdIZWFkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmNhbkNhY2hlRGVsZXRlSUMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA0LTAzICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW1hjb2RlXSBSZXBsYWNlIEFT
QU5fT1RIRVJfQ0ZMQUdTIGFuZCBBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTIHdpdGggJChpbmhl
cml0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2ZmMjI1ZTA3MWQ5
ZWI0Y2M0NGVkZThlYTZlODVmNDFiNWJlMjdlOC4uNzEzMzAwMDI3ZWI1MTVlOGVhMzNkZTllMjdk
NjE4OTA4M2ZmZDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTAx
LDYgKzUwMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgYnl0ZWNvZGUvQ29kZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgK
ICAgICBieXRlY29kZS9EYXRhRm9ybWF0LmgKKyAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5oCisgICAgYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2
YWxDb2RlQ2FjaGUuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29k
ZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOWUwZWUxZGU5ZTM0NzhjMGRhMzI4NTNjZjE2YmQyMjU3MmFjMmMyYi4uODAzNDQyYmYw
YmEzMGUzM2ViMDlkNTlmOGI0ZTI4MmQ1YWYwN2VkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNzgsNyArMTE3OCw5IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFG
N0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQz
MThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3
MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczMTFGQTMxMjQwREIxRDMwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovOyB9OwogCQk3MzRCNjU1NTIzRjVDMTA0MDBB
MDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJv
cGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0FEMDYyODIzRkY2NjI2
MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAw
OTMzNTY1IC8qIEIzUmVkdWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1
Y2VMb29wU3RyZW5ndGguaCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdh
c21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4
MTM5MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2Fz
bU1vZHVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0zOTczLDcgKzM5NzUsMTEgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFG
N0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0
OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJp
YW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMzMjQwREIyNDkwMDNE
NDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVC
eUlkVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTkwRDk2MjQw
MDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
ZWxldGVCeVN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczNEI2NTU0
MjNGNEEzMzEwMEEwNjlEMSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTczQUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZWxldGVCeVN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGgu
aDsgcGF0aCA9IGIzL0IzUmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTczRTM3OTk1MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BT
dHJlbmd0aC5jcHA7IHBhdGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVs
ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI0Niw2ICs4MjUyLDEwIEBACiAJ
CQkJMEZDNzEyREQxN0NEODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oICovLAogCQkJCUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1
bXAuY3BwICovLAogCQkJCUZFNTA2ODY0MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJj
ZUR1bXAuaCAqLywKKwkJCQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuY3BwICovLAorCQkJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlk
VmFyaWFudC5oICovLAorCQkJCTczMTkwRDk2MjQwMDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0
YXR1cy5jcHAgKi8sCisJCQkJNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3Rh
dHVzLmggKi8sCiAJCQkJMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxl
LmNwcCAqLywKIAkJCQkwRkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUu
aCAqLywKIAkJCQkwRjJFQkJBQTFERURGOTRFMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNo
ZS5jcHAgKi8sCkBAIC05MjE5LDYgKzkyMjksOCBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5
REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0
NzY0QzQ1RkU4NzFCMDQ4NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQkI3M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRl
QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5
MyAvKiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzM0QjY1NTUyM0Y1QzEw
NDAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTc3QTQyM0UxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzdiNjM4YmM0MDExYzlj
ZDQ0ZTE2Mjk5N2UwOTNjOGUwNGU0MjBhMi4uZGFmMjI1ZTFjYWM3M2M1Nzg1ZGFjNjJkMGRlNWRm
OWIwMjk1MTZjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjIwLDYgKzIyMCw4
IEBAIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAogYnl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAK
IGJ5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKIGJ5dGVjb2RlL0RlZmVy
cmVkU291cmNlRHVtcC5jcHAKK2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAorYnl0ZWNvZGUv
RGVsZXRlQnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAog
Ynl0ZWNvZGUvRXZhbENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5j
cHAKaW5kZXggZjZmN2JkMWNlNmY0YjA2ZjcxNDBiMTYyNDdmMTAwZjI0YzEzNzQzMy4uZDJlYWE0
N2ZhM2UwOTQwYjg1ZjAxMDkwMDk2NGVhNmRjZjE3ZWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtMTI5LDEwICsxMjksNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZN
JiB2bSwgSlNDZWxsKiBvd25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3Ry
dWN0dXJlLT5wcmV2aW91c0lEKCkpOwotICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ug
c28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLCBlLmcuIFR5cGVkQXJy
YXkgY2VsbHMgcmVxdWlyZSBhIGNoZWNrIGZvciBuZXV0ZXJpbmcgc3RhdHVzLgotICAgIC8vIFNl
ZSB0aGUgRGVsZXRlIGNvZGUgYmVsb3cuCi0gICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmNhbkNhY2hl
RGVsZXRlSUMoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKCFuZXdTdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nl
c3NDYXNlKHZtLCBvd25lciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVy
ZSwgeyB9LCB7IH0pKTsKIH0KIApAQCAtMTk1MCwxOCArMTk0Nyw5IEBAIHZvaWQgQWNjZXNzQ2Fz
ZTo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQog
ICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGpp
dCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFj
ZSk7CiAKLSAgICAgICAgYm9vbCBoYXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5t
YXlIYXZlSW5kZXhpbmdIZWFkZXIoKTsKLSAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMg
Y2FzZSB5ZXQgc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgotICAg
ICAgICAvLyBTZWUgU3RydWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5LgotICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmNhbkNhY2hlRGVs
ZXRlSUMoKSk7Ci0gICAgICAgIC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBw
cm9wZXJ0aWVzLCBzaW5jZSBvdXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgotICAgICAgICBib29s
IHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAm
JiAhaGFzSW5kZXhpbmdIZWFkZXI7Ci0KICAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCks
IHZhbHVlUmVncyk7CiAKLSAgICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1
dHRlcmZseSkgewotICAgICAgICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZs
eSh2bSwgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgYmFzZUdQUik7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNJbmxpbmVPZmZzZXQobV9vZmZzZXQpKSB7CisgICAgICAgIGlmIChpc0lubGluZU9mZnNl
dChtX29mZnNldCkpIHsKICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAg
ICAgIHZhbHVlUmVncywKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDY1N2Uy
YmIzZTIzYmE3NWI0NjcyMDMwYWFjMzhmNmY4NTNjMjQ5ZjUuLmExYWQzNzY2OWFmMTIwMDMwMjM1
MTUwMmUzNGM5MGMyNDE4ODRlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC0xNTAwLDYgKzE1MDAsOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0
SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3Vs
dCkKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0
ZXJhdG9yLT52YWx1ZS5wdXRTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAg
IGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5pbnMpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUuaW5TdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVzKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVl
LmRlbGV0ZVN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICB9CiAjZW5kaWYKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJ
ZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRW
YXJpYW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWQ0MmJlOTljZDAwMDJhYjU1YTQ1ZmMyODY5MjAwMmU4
N2M2NmI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmll
cklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RE
dW1wLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJ
ZFZhcmlhbnQoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdCwKKyAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKKyAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAsIG1fb2xkU3Ry
dWN0dXJlKG9sZFN0cnVjdHVyZSkKKyAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkK
KyAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50
aWZpZXIpKQoreworICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX29mZnNldCA9
PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZSk7CisgICAgZWxz
ZQorICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQ6
On5EZWxldGVCeUlkVmFyaWFudCgpIHsgfQorCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJ
ZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0g
b3RoZXI7Cit9CisKK0RlbGV0ZUJ5SWRWYXJpYW50JiBEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0
b3I9KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBtX2lkZW50aWZpZXIg
PSBvdGhlci5tX2lkZW50aWZpZXI7CisgICAgbV9yZXN1bHQgPSBvdGhlci5tX3Jlc3VsdDsKKyAg
ICBtX29sZFN0cnVjdHVyZSA9IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIG1fbmV3U3RydWN0
dXJlID0gb3RoZXIubV9uZXdTdHJ1Y3R1cmU7CisgICAgbV9vZmZzZXQgPSBvdGhlci5tX29mZnNl
dDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2Jvb2wgRGVsZXRlQnlJZFZhcmlhbnQ6OmF0dGVt
cHRUb01lcmdlKGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFt
X2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX3Jlc3VsdCAhPSBvdGhlci5tX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVy
Lm1faWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29mZnNl
dCAhPSBvdGhlci5tX29mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1f
b2xkU3RydWN0dXJlICE9IG90aGVyLm1fb2xkU3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQVNTRVJUKG1fbmV3U3RydWN0dXJlID09IG90aGVyLm1fbmV3U3RydWN0dXJlKTsK
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50Ojp3cml0ZXNT
dHJ1Y3R1cmVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFuZXdTdHJ1Y3R1cmUoKTsKK30KKwor
dm9pZCBEZWxldGVCeUlkVmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgbV9pZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2
b2lkIERlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBpZiAobV9vbGRTdHJ1Y3R1cmUpCisgICAgICAgIG1fb2xkU3RydWN0dXJlLT5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3
U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFy
aWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQo
b3V0LCAwKTsKK30KKworYm9vbCBEZWxldGVCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQor
eworICAgIGlmICghdm0uaGVhcC5pc01hcmtlZChtX29sZFN0cnVjdHVyZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIXZtLmhlYXAuaXNNYXJrZWQo
bV9uZXdTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
IG91dCwgRHVtcENvbnRleHQqKSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIpOworICAgIG91
dC5wcmludCgiaWQ9JyIsIG1faWRlbnRpZmllciwgIicsIHJlc3VsdD0iLCBtX3Jlc3VsdCk7Cisg
ICAgaWYgKG1fb2xkU3RydWN0dXJlKQorICAgICAgICBvdXQucHJpbnQoIiwgIiwgKm1fb2xkU3Ry
dWN0dXJlKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiIC0+
ICIsICptX25ld1N0cnVjdHVyZSk7CisgICAgb3V0LnByaW50KCIsIG9mZnNldCA9ICIsIG9mZnNl
dCgpKTsKKyAgICBvdXQucHJpbnQoIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjg3NzZiNjk3OWY2ZDljMjM2NWNjZTM1NDFmZTdhZmQxYzEyMjBkOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlk
VmFyaWFudC5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIk9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOworc3Ry
dWN0IER1bXBDb250ZXh0OworCitjbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGVsZXRlQnlJZFZhcmlhbnQoCisgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgcmVzdWx0LAorICAgICAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdXRyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsK
KworICAgIH5EZWxldGVCeUlkVmFyaWFudCgpOworCisgICAgRGVsZXRlQnlJZFZhcmlhbnQoY29u
c3QgRGVsZXRlQnlJZFZhcmlhbnQmKTsKKyAgICBEZWxldGVCeUlkVmFyaWFudCYgb3BlcmF0b3I9
KGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQorICAgIGJvb2wgcmVz
dWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKyAgICBib29sIHdyaXRlc1N0cnVjdHVy
ZXMoKSBjb25zdDsKKworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2Zmc2V0OyB9CisKKyAgICBib29sIGlzUHJvcGVydHlVbnNldCgpIGNvbnN0IHsgcmV0dXJu
IG9mZnNldCgpID09IGludmFsaWRPZmZzZXQ7IH0KKworICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7Cisg
ICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CisgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBj
b25zdDsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBEZWxldGVCeUlk
VmFyaWFudCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFv
dGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5t
X2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOworCisgICAg
Ym9vbCBtX3Jlc3VsdDsKKyAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOworICAgIFN0cnVj
dHVyZSogbV9uZXdTdHJ1Y3R1cmU7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAg
Q2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdmMjI5MjU5NDZjZjZkYjdjYzJhOTI1Nzk2YTJkZDFiZjRhNWNhOWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRl
QnlTdGF0dXMuY3BwCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlbGV0
ZUJ5U3RhdHVzLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJD
YWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nl
c3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0
RHVtcC5oPgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0
dGVyU2V0dGVyOworfQorCitib29sIERlbGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0
IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1
c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0
ZUJ5U3RhdHVzOjpjb21wdXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRp
ZEV4aXQpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5t
X2xvY2spOworCisgICAgRGVsZXRlQnlTdGF0dXMgcmVzdWx0OworCisjaWYgRU5BQkxFKERGR19K
SVQpCisgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soCisgICAgICAgIGxvY2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5
dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFwKTsK
KyAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgRU5BQkxFKEpJVCkK
K0RlbGV0ZUJ5U3RhdHVzOjpEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgewor
ICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRl
ID0gTm9JbmZvcm1hdGlvbjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1t
YXJ5OjpTaW1wbGU6CisgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAg
Y2FzZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBTdHViSW5mb1N1bW1hcnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHVi
SW5mby50b29rU2xvd1BhdGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Ns
b3dQYXRoOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICBjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDb2RlQmxvY2sqIGJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCit7
CisgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFy
eShibG9jay0+dm0oKSwgc3R1YkluZm8pOworICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkp
KQorICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKwor
ICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsK
KyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2FjaGVUeXBl
OjpVbnNldDoKKyAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOwor
CisgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3Mq
IGxpc3QgPSBzdHViSW5mby0+dS5zdHViOworCisgICAgICAgIGZvciAodW5zaWduZWQgbGlzdElu
ZGV4ID0gMDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRleCkgeworICAgICAg
ICAgICAgY29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlzdEluZGV4KTsKKyAg
ICAgICAgICAgIEFTU0VSVCghYWNjZXNzLnZpYVByb3h5KCkpOworCisgICAgICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIEFTU0VS
VChzdHJ1Y3R1cmUpOworCisgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50eXBlKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgICAgIGNhc2Ug
QWNjZXNzQ2FzZTo6RGVsZXRlTm9uQ29uZmlndXJhYmxlOiB7CisgICAgICAgICAgICAgICAgRGVs
ZXRlQnlJZFZhcmlhbnQgdmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBhY2Nlc3MudHlwZSgp
ID09IEFjY2Vzc0Nhc2U6OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2UsIHN0cnVjdHVyZSwgbnVs
bHB0ciwgaW52YWxpZE9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5k
VmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3Rh
dHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRl
bGV0ZTogeworICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlUcmFuc2l0aW9uRnJvbUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwg
YWNjZXNzLmlkZW50aWZpZXIoKS51aWQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAo
IW5ld1N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVz
KEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChvZmZzZXQsIG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0KCkpOyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vz
cy5pZGVudGlmaWVyKCksIHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBhY2Nlc3Mub2Zm
c2V0KCkpOworCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJp
YW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xv
d1ZlcnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhK
U0M6OnNsb3dWZXJzaW9uKHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gRGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwg
KnN0dWJJbmZvKTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBEZWxldGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVC
eVN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3Rh
dHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlkRXhp
dCA9IGhhc0JhZENhY2hlRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisK
KyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAg
ICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAgICAg
ICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJlc3VsdCkgLT4gRGVs
ZXRlQnlTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9y
aWdpbikpIHsKKyAgICAgICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNlbGluZVJlc3VsdCA9
IGNvbXB1dGVGb3JCYXNlbGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywg
YmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAgICAgICAgICAgIGJh
c2VsaW5lUmVzdWx0Lm1lcmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2Vs
aW5lUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQo
RXhpdEZyb21JbmxpbmVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJz
aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworCisgICAgICAg
IGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3Vs
dDsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0
YXR1cy5zdHViSW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
U2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoc3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBi
bGVzcygqc3RhdHVzLmRlbGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVG
b3JCYXNlbGluZShiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlk
RXhpdCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVCeVN0YXR1cyBEZWxl
dGVCeVN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQ
YXRoKCkpCisgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1Bh
dGgpOworICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKK30K
Kwordm9pZCBEZWxldGVCeVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90aGVy
KQoreworICAgIGlmIChvdGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2Vy
dmVkU2xvd1BhdGgoKSB8fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAq
dGhpcyA9IERlbGV0ZUJ5U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0
aCk7CisgICAgfTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1h
dGlvbjoKKyAgICAgICAgKnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fz
ZSBTaW1wbGU6CisgICAgICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAg
ICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlh
bnQgOiBvdGhlci5tX3ZhcmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQo
b3RoZXJWYXJpYW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgor
ICAgIGNhc2UgT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93
KCk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBEZWxldGVCeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAg
IGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmFyaWFudHMu
cmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFudCkgLT4gYm9vbCB7
CisgICAgICAgICAgICByZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
KTsKKyAgICAgICAgfSk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBt
X3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBEZWxldGVC
eVN0YXR1czo6c2luZ2xlSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgcmVzdWx0ID0gbV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAo
IXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciA9IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAo
IWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlk
ZW50aWZpZXIgIT0gcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OnZpc2l0QWdncmVn
YXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZp
c2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92
YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9v
bCBEZWxldGVCeVN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGZvciAoYXV0byYgdmFy
aWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgRGVsZXRlQnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBvdXQucHJpbnQoIigiKTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5m
b3JtYXRpb246CisgICAgICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGUiKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQu
cHJpbnQoIkxpa2VseVRha2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBP
YnNlcnZlZFRha2VzU2xvd1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2JzZXJ2ZWRUYWtlc1Ns
b3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJpbnQoIiwgIiwgbGlz
dER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZTVhZDYwMmI2NTE3MGMxNDYwMjczN2RkN2NjODU1NzY5OGY1ZjcxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAg
LTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNs
dWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIK
KyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVk
ZSAiU3R1YkluZm9TdW1tYXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3ND
YXNlOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNz
IERlbGV0ZUJ5U3RhdHVzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBlbnVtIFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNo
ZWQgc28gd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAg
ICAgICAgLy8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxl
LAorICAgICAgICAvLyBJdCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAg
IExpa2VseVRha2VzU2xvd1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFr
ZSB0aGUgc2xvdyBwYXRoLgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsK
KworICAgIERlbGV0ZUJ5U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24p
CisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0YXRlIHN0YXRl
KQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUg
IT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNT
dGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNs
b3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7
IH0KKyAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7
IH0KKyAgICBjb25zdCBWZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsg
cmV0dXJuIG1fdmFyaWFudHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50
aWZpZXIoKSBjb25zdDsKKworICAgIERlbGV0ZUJ5U3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7
CisKKyAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQg
dGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZv
aWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0
ZShTbG90VmlzaXRvciYpOworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAg
ICBib29sIGZpbmFsaXplKFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVs
ZXRlQnlJZFZhcmlhbnQmKTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwg
U3RydWN0dXJlU3R1YkluZm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IERlbGV0ZUJ5U3RhdHVz
Jik7CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvckJhc2VsaW5lKENvZGVC
bG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworI2lmIEVOQUJM
RShKSVQpCisgICAgc3RhdGljIERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhv
dXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKwor
ICAgIFZlY3RvcjxEZWxldGVCeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBt
X3N0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCmluZGV4IGRiZDVhODgyMzEyNDIyZDRlOGIyZWRkM2I3
OTgyMmM3NjdhN2JiYzguLmYwMzE5MDExNWEzYjhlNDJiNGViOGI4NzQwM2FmMmQ4NGUwMzc0ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0z
Nyw2ICszNyw3IEBAIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwogY2xhc3Mg
SW5CeUlkU3RhdHVzOwogY2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVz
OwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiBzdHJ1Y3QgQnlWYWxJbmZvOwogCkBAIC00OCw2
ICs0OSw3IEBAIHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7
IG51bGxwdHIgfTsKICAgICBJbkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OwogICAg
IFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBEZWxldGVCeVN0YXR1
cyogZGVsZXRlU3RhdHVzIHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPENvZGVP
cmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAppbmRleCBjOTQ4NGI0ODVhZGZlNmRhYjRjY2YyYjdhYTY0NWJmNzg4OTgwODMyLi5kNjE1
YTEzZDljM2M0NzVhNjE2YzJlNTQ3NzI5NTU0NjE2OWM0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNCw2ICsz
NCw3IEBAIFJlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNv
cmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CiAg
ICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RGTW92ZShvdGhlci5p
bnMpOworICAgIGRlbGV0ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwogICAgIHNocmlua1Rv
Rml0KCk7CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNzUsMTAgKzc2LDIwIEBAIEluQnlJZFN0
YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIGNvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVsZXRlQnlTdGF0dXMq
IFJlY29yZGVkU3RhdHVzZXM6OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4sIGNvbnN0IERlbGV0ZUJ5U3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0
dXNQdHIgPSBtYWtlVW5pcXVlPERlbGV0ZUJ5U3RhdHVzPihzdGF0dXMpOworICAgIERlbGV0ZUJ5
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgZGVsZXRlcy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdm9pZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90
VmlzaXRvciYgc2xvdFZpc2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKICAg
ICAgICAgcGFpci5zZWNvbmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRBZ2dyZWdh
dGUoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKQEAgLTg5LDYgKzEwMCw4IEBAIHZvaWQgUmVjb3Jk
ZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAg
ICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYg
cGFpciA6IGlucykKICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9y
KTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+
bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZp
bmFsaXplV2l0aG91dERlbGV0aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCmluZGV4IGIzNTVlOWI2MjMzODQ2MjkyNjQ4
MmM3YzFiOTFmNDIxZmZlNjIwZDAuLjllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4
ZDA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
YWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAi
R2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRC
eUlkU3RhdHVzLmgiCkBAIC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsK
ICAgICBHZXRCeVN0YXR1cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0
IEdldEJ5U3RhdHVzJik7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25z
dCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0YXR1cyog
YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsK
KyAgICBEZWxldGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYs
IGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CiAgICAgCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShT
bG90VmlzaXRvciYpOwogICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKQEAgLTYz
LDEyICs2NSwxNCBAQCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMoZ2V0
cyk7CiAgICAgICAgIGZ1bmMocHV0cyk7CiAgICAgICAgIGZ1bmMoaW5zKTsKKyAgICAgICAgZnVu
YyhkZWxldGVzKTsKICAgICB9CiAgICAgCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2lu
LCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0czsK
ICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlk
U3RhdHVzPj4+IHB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVu
aXF1ZV9wdHI8SW5CeUlkU3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVP
cmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBkZWxldGVzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOTUzZmJhZWY0OGYzYTU1
NGQ0NTliZDlhMmIzZDZlNjNkYWE3Y2FjNy4uNzcxZDkyZTgyMzllNDNhYjI1ZmRiNjZmY2YxMDU5
OWVhYWNhMzk0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMzcxMCw2ICszNzEwLDQxIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFs
c2UpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZz
ZXQ6IHsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFRy
YW5zaXRpb25WZWN0b3IgdHJhbnNpdGlvbnM7CisKKyAgICAgICAgLy8gT3JkaW5hcmlseSB5b3Ug
aGF2ZSB0byBiZSBjYXJlZnVsIHdpdGggY2FsbGluZyBzZXRTaG91bGRUcnlDb25zdGFudEZvbGRp
bmcoKQorICAgICAgICAvLyBiZWNhdXNlIG9mIHRoZSBlZmZlY3Qgb24gY29tcGlsZSB0aW1lcywg
YnV0IHRoaXMgbm9kZSBpcyBGVEwtb25seS4KKyAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlD
b25zdGFudEZvbGRpbmcodHJ1ZSk7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSBiYXNlID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgaWYgKG5vZGUtPm11bHRpRGVsZXRlQnlP
ZmZzZXREYXRhKCkud3JpdGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAgZGlkRm9sZENsb2Ji
ZXJTdHJ1Y3R1cmVzKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlE
ZWxldGVCeU9mZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
IGNvbnN0IERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9m
ZnNldERhdGEoKS52YXJpYW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgdGhpc1NldCA9ICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgIHRoaXNTZXQuZmlsdGVyKGJhc2UpOworICAgICAgICAgICAgaWYg
KHRoaXNTZXQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBl
bmQoCisgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24obV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAg
ICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgbmV3U2V0Lm1lcmdlKHRoaXNTZXQpOworICAgICAgICB9CisKKyAgICAgICAg
b2JzZXJ2ZVRyYW5zaXRpb25zKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbnMpOworICAgICAgICBp
ZiAoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5ld1Nl
dCkgPT0gQ29udHJhZGljdGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRFeGVjdXRh
YmxlOiB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52
YWx1ZSgpOwpAQCAtNDEwOCw2ICs0MTQzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJlYWs7CiAKQEAgLTQy
ODksNiArNDMyNSwxMyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpmaWx0ZXJJQ1N0YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0
cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+ZGVsZXRlQnlTdGF0dXMoKS0+
ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDUzYjAxNDgz
ZWQ0MTQ5MDg0ODc1MWRkYjMzNjlkMjE2YmNiNWQ1YzguLmJlNjcxMjFjZTMxMzg1ZGZkOTVlN2Ri
NDE4OWJkOGNjZjc4OTg4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA3LDYgKzQwNyw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgog
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
ICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgpAQCAtMTI2Niw3ICsxMjY3LDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OiB7CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czogewogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWlzRWxpbWluYXRlZEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1v
dmUobV9ncmFwaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDk5NjFkOTAzMmQ2ODBkODUzNDY1OThkZTZhMmI4ZmFjZDczNDI3YmQu
LjlkZDRiOWFhNDhjODBjMDZkZjA0YzBlMWYzYWYzMzA1ZWVkYWQxMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJERkdHcmFw
aC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTI0OSw2ICsyNTAsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgaGFuZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0
IFB1dEJ5SWRTdGF0dXMmLAogICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0
aW9uU2l6ZSk7CisKKyAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCisgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMpOwogICAgIAogICAgIC8vIEVp
dGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRp
dGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhv
bGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBA
IC00NjE0LDYgKzQ2MTgsMTA0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgIGdldHRlciwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgcmVnaXN0ZXJPZmZzZXQs
ICp2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCksIHByZWRpY3Rpb24pOwogfQogCit2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5h
dGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzKQor
eworICAgIGlmICghZGVsZXRlQnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZGVsZXRlQnlTdGF0dXMu
dmFyaWFudHMoKS5zaXplKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAg
ICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlk
LCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA+IDEpIHsKKyAgICAgICAg
aWYgKCFtX2dyYXBoLm1fcGxhbi5pc0ZUTCgpCisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNl
UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBkZWxldGVCeVN0YXR1
cy52YXJpYW50cygpLnNpemUoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFkZFRvR3JhcGgoRmls
dGVyRGVsZXRlQnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2Vz
KCkuYWRkRGVsZXRlQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMp
KSwgYmFzZSk7CisKKyAgICAgICAgYm9vbCBoYXNIaXQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBo
YXNNaXNzID0gZmFsc2U7CisgICAgICAgIGJvb2wgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSA9IGZh
bHNlOworCisgICAgICAgIGZvciAoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBk
ZWxldGVCeVN0YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgaWYgKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIGhhc0hpdCA9
IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHZhcmlhbnQucmVzdWx0KCkpCisgICAgICAg
ICAgICAgICAgaGFzTWlzcyA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoIWhhc0hpdCkgeworICAgICAgICAgICAgaWYgKChoYXNNaXNzICYmICFoYXNNaXNzTm9uY29u
ZmlndXJhYmxlKSB8fCAoIWhhc01pc3MgJiYgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkpIHsKKyAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKKworICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1cy52YXJp
YW50cygpKQorICAgICAgICAgICAgICAgICAgICBiYXNlU2V0LmFkZCh2YXJpYW50Lm9sZFN0cnVj
dHVyZSgpKTsKKworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9w
SW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChiYXNlU2V0KSksIGJhc2UpOworICAgICAgICAg
ICAgICAgIHNldChkZXN0aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4oZGVsZXRlQnlTdGF0
dXMudmFyaWFudHMoKVswXS5yZXN1bHQoKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAg
ICAgZGF0YS0+dmFyaWFudHMgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpOworICAgICAgICBk
YXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgc2V0KGRl
c3RpbmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBP
cEluZm8oZGF0YSksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VChkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKKyAgICBEZWxldGVCeUlk
VmFyaWFudCB2YXJpYW50ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsKKworICAgIGlm
ICghdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRl
bGV0ZUJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZERlbGV0ZUJ5U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJh
c2UpOworICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICAgICAg
c2V0KGRlc3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJEZWxldGVC
eVN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGREZWxl
dGVCeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1cykpLCBiYXNlKTsK
KyAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICBBU1NFUlQodmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0
ZWQoKSk7CisgICAgQVNTRVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgIEFTU0VSVChp
c1ZhbGlkT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKTsKKworICAgIE5vZGUqIHByb3BlcnR5U3Rv
cmFnZTsKKyAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVj
dHVyZSgpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
KSk7CisKKyAgICBpZiAoaXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpCisgICAgICAg
IHByb3BlcnR5U3RvcmFnZSA9IGJhc2U7CisgICAgZWxzZQorICAgICAgICBwcm9wZXJ0eVN0b3Jh
Z2UgPSBhZGRUb0dyYXBoKEdldEJ1dHRlcmZseSwgYmFzZSk7CisKKyAgICBTdG9yYWdlQWNjZXNz
RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsKKyAgICBkYXRh
LT5vZmZzZXQgPSB2YXJpYW50Lm9mZnNldCgpOworICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIg
PSBpZGVudGlmaWVyTnVtYmVyOworCisgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgUHV0QnlPZmZz
ZXQsCisgICAgICAgIE9wSW5mbyhkYXRhKSwKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAg
ICAgICBiYXNlLAorICAgICAgICBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgYWRkVG9H
cmFwaChQdXRTdHJ1Y3R1cmUsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgc2V0KGRl
c3RpbmF0aW9uLCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkpOworICAg
IHJldHVybjsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQoCiAgICAgTm9k
ZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29u
c3QgUHV0QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKIHsKQEAgLTU5
NDcsMTYgKzYwNDksNDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wRGVsQnlJZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUu
bV9iYXNlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKKyAgICAg
ICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1f
aWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CiAg
ICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygp
W2lkZW50aWZpZXJOdW1iZXJdOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRU
b0dyYXBoKERlbGV0ZUJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCB1aWQpKSwgYmFzZSkpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gQ2FjaGVh
YmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKTsKKyAgICAgICAgICAgIGhhbmRsZURl
bGV0ZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1i
ZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9p
ZCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAg
ICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7
CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7Ci0gICAgICAg
ICAgICBOb2RlKiBrZXkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIGtleSkpOwor
ICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Cisg
ICAgICAgICAgICBib29sIHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNv
bXB1dGVGb3IoCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1f
aWNDb250ZXh0U3RhY2ssCisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisK
KyAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJh
ZFR5cGUpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2Zp
bGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CisKKyAgICAgICAgICAg
ICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gZGVsZXRlQnlTdGF0dXMu
c2luZ2xlSWRlbnRpZmllcigpKSB7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQgPSBpZGVudGlmaWVyLnVpZCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlm
aWVyLnVpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNDZWxsKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBo
LmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAgIGhh
bmRsZURlbGV0ZUJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZp
ZXJOdW1iZXIsIGRlbGV0ZUJ5U3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29t
cGlsZUFzRGVsZXRlQnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoIXNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQpCisgICAgICAg
ICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBiYXNl
LCBwcm9wZXJ0eSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X3ZhbCk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCBkMTk1MjJmZWQ1ZThlNWZhZmM1ZDk1M2VjODMyMGVlN2Q2N2Y1MjNjLi42MmJiMTI1OGQ1MGI5
MzM5MDJhZDIyZGM2ZTQ5ODZjNmI1NjExMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtNDY3LDYgKzQ2Nyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxl
dGVCeVN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKQEAgLTEyNzgsNiArMTI3OSwxNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUtPmNo
aWxkMSgpKSwgTGF6eU5vZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAgcmVh
ZChKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7
CisgICAgICAgIEFic3RyYWN0SGVhcCBoZWFwKE5hbWVkUHJvcGVydGllcywgbm9kZS0+bXVsdGlE
ZWxldGVCeU9mZnNldERhdGEoKS5pZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgd3JpdGUoaGVh
cCk7CisgICAgICAgIGlmIChub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0
cnVjdHVyZXMoKSkKKyAgICAgICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAg
ICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQx
KCkpLCBMYXp5Tm9kZShncmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBub2RlLT5zdG9yYWdlQWNjZXNzRGF0YSgpLmlk
ZW50aWZpZXJOdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhk
MmJmMDZkZWIuLmYxNzQ1ZWNhYTAxNWE5NmRlYmYwZGMxYTliYWE5MjgxMjFkMzk2NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CkBAIC04Niw2ICs4Niw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBi
dXQgbm90aGluZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRl
IHRoZQogICAgICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5k
IHRob3NlIHRoYXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAg
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCmluZGV4IDY1MDUzY2ViNWUwODdhMGNkNGEzMTQ4MGFmZGU4ZDY1MTgxZWQx
NDMuLjkxMWRkOWIxZTc3YWNiNTU4YTg2MzBlZjJjMTgxMDA2MGYxZWRjMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CkBAIC01MDksNiArNTA5LDM2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogeworICAgICAgICAgICAgICAgIEVkZ2UgYmFz
ZUVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gYmFz
ZUVkZ2Uubm9kZSgpOworICAgICAgICAgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBk
YXRhID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKTsKKworICAgICAgICAgICAgICAg
IEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2UpOworCisgICAg
ICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2gg
Q0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgorICAgICAg
ICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1
bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgorCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBkYXRhLnZh
cmlhbnRzW2ldOworCisgICAgICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLmNvbnRhaW5z
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0gPSBkYXRhLnZhcmlhbnRz
Lmxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudmFyaWFudHMucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkYXRhLnZhcmlhbnRzLnNpemUoKSAhPSAx
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVtaXREZWxl
dGVCeU9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNl
VmFsdWUsIGRhdGEudmFyaWFudHNbMF0sIGRhdGEuaWRlbnRpZmllck51bWJlcik7CisgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJl
OiB7CiAgICAgICAgICAgICAgICAgRWRnZSBiYXNlRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwpAQCAt
MTMxMiw2ICsxMzQyLDQ1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlKTsK
ICAgICAgICAgfQogICAgIH0KKworICAgIHZvaWQgZW1pdERlbGV0ZUJ5T2Zmc2V0KHVuc2lnbmVk
IGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVl
LCBjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlcikKKyAgICB7CisgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOwor
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9yaWdpbi5leGl0T0spOworICAgICAg
ICBhZGRCYXNlQ2hlY2soaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICBub2RlLT5j
aGlsZDEoKS5zZXRVc2VLaW5kKEtub3duQ2VsbFVzZSk7CisKKyAgICAgICAgaWYgKCF2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKSB7CisgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50
KG5vZGUsIGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSk7CisgICAgICAgICAgICBub2RlLT5v
cmlnaW4gPSBub2RlLT5vcmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFw
aC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSkpOworCisgICAgICAgIEVkZ2UgcHJvcGVydHlTdG9yYWdlOwor
CisgICAgICAgIGlmIChpc0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAg
ICAgIHByb3BlcnR5U3RvcmFnZSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBFZGdlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBv
cmlnaW4sIG5vZGUtPmNoaWxkMSgpKSk7CisKKyAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEmIGRh
dGEgPSAqbV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgICAgICBkYXRhLm9m
ZnNldCA9IHZhcmlhbnQub2Zmc2V0KCk7CisgICAgICAgIGRhdGEuaWRlbnRpZmllck51bWJlciA9
IGlkZW50aWZpZXJOdW1iZXI7CisKKyAgICAgICAgTm9kZSogY2xlYXJWYWx1ZSA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgSlNDb25zdGFudCwgb3Jp
Z2luLCBPcEluZm8obV9ncmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVj
Tm9uZSwgUHV0QnlPZmZzZXQsIG9yaWdpbiwgT3BJbmZvKCZkYXRhKSwgcHJvcGVydHlTdG9yYWdl
LCBub2RlLT5jaGlsZDEoKSwgRWRnZShjbGVhclZhbHVlKSk7CisgICAgICAgIG9yaWdpbiA9IG9y
aWdpbi53aXRoSW52YWxpZEV4aXQoKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFB1dFN0cnVjdHVyZSwgb3Jp
Z2luLCBPcEluZm8odHJhbnNpdGlvbiksCisgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHZhcmlhbnQu
cmVzdWx0KCkpKTsKKyAgICAgICAgbm9kZS0+b3JpZ2luID0gb3JpZ2luOworICAgIH0KICAgICAK
ICAgICB2b2lkIGFkZEJhc2VDaGVjaygKICAgICAgICAgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBO
b2RlKiBub2RlLCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0IFN0cnVjdHVy
ZVNldCYgc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1
ZDNjOGZkNWRjZjhmYTJlZmJhMzdmOTZkYzkwOTlkNDk3MjUxODEuLjkyYzAzOGYwNTkwMmVlOGMz
MTBjNWExMTNkNjQ5NWQwNTA1MTBjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1ZhcmFyZ3M6CiAgICAgY2FzZSBDaGVja1R5cGVJbmZv
RmxhZ3M6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVC
eU9mZnNldDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNh
c2UgSW50NTJSZXA6CkBAIC0yNDUsNiArMjQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBEYXRlR2V0SW50MzJPck5hTjoKICAgICBj
YXNlIERhdGVHZXRUaW1lOgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3OWE5YzRmYWI1MGU2YzY2NTVh
NDZkNGM5YTFmOThiZWYzYzc4ZjM3Li4yYzM3NjgwM2M0Y2E2ZGY0ZjJmZDJiZTA1YzE0ZTA2NDNk
NDgzNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTE4MDgsNiArMTgwOCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDogIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogSW50cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRjaFN0cnVjdHVyZSB0aGF0IGRv
ZXNuJ3QgZG8gYSBjZWxsIGNoZWNrLgpAQCAtMjU3OSw2ICsyNTg0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAg
ICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggNjVmZTZhNjgxNTI4MTli
MTEyMjk1NmQ5NTA2MDI5ZmI3YTg0ZDA3OC4uYmI2ZDhmNTI4YjE2Y2I1OGE5NTI5ZjUwYjU4ZmFh
MDEwZjQ2ZTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTMw
NCw2ICszMDQsMTIgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBj
aGFyKiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250ZXgKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBv
dXQucHJpbnQoY29tbWEsIGluQ29udGV4dChkYXRhLnZhcmlhbnRzW2ldLCBjb250ZXh0KSk7CiAg
ICAgfQorICAgIGlmIChub2RlLT5oYXNNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpKSB7CisgICAg
ICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbm9kZS0+bXVsdGlEZWxldGVCeU9m
ZnNldERhdGEoKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWQiLCBkYXRhLmlkZW50aWZp
ZXJOdW1iZXIsICJ7IiwgaWRlbnRpZmllcnMoKVtkYXRhLmlkZW50aWZpZXJOdW1iZXJdLCAifSIp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRhdGEudmFyaWFu
dHNbaV0sIGNvbnRleHQpKTsKKyAgICB9CiAgICAgaWYgKG5vZGUtPmhhc01hdGNoU3RydWN0dXJl
RGF0YSgpKSB7CiAgICAgICAgIGZvciAoTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50JiB2YXJpYW50IDog
bm9kZS0+bWF0Y2hTdHJ1Y3R1cmVEYXRhKCkudmFyaWFudHMpCiAgICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsIGluQ29udGV4dCgqdmFyaWFudC5zdHJ1Y3R1cmUuZ2V0KCksIGNvbnRleHQpLCAi
PT4iLCB2YXJpYW50LnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5k
ZXggOTQ3ZWZhYWJhOWU2NDk2YjNiMDVjNmY1NTE0MmFiN2M3N2I1YjVhMi4uMmMyNTE5NmZiMDVj
NDk3Nzk0YjVkZGZjNjYxZGM3N2ZmMWEwZTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaApAQCAtMTEwMCw2ICsxMTAwLDcgQEAgcHVibGljOgogICAgIEJhZzxTd2l0Y2hEYXRh
PiBtX3N3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0
QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5
T2Zmc2V0RGF0YTsKKyAgICBCYWc8TXVsdGlEZWxldGVCeU9mZnNldERhdGE+IG1fbXVsdGlEZWxl
dGVCeU9mZnNldERhdGE7CiAgICAgQmFnPE1hdGNoU3RydWN0dXJlRGF0YT4gbV9tYXRjaFN0cnVj
dHVyZURhdGE7CiAgICAgQmFnPE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE+IG1fb2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YTsKICAgICBCYWc8Q2FsbFZhcmFyZ3NEYXRhPiBtX2NhbGxWYXJhcmdz
RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4
MTBlMTAxNTUzYjE5YWY1MTM0NDJjMDNlYmVlYzA0ODBmMmIuLjFjY2E4YjJhYzQxY2JlN2Y0OTZk
M2M5NmE3YjhkZDEwMDAyZDU4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcApAQCAtMTA5LDYgKzEwOSw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIEZpbHRlckdldEJ5
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAK
aW5kZXggZGNiMmI1OWRjYWNiYjIxOTNhODJhMGI5NzMzMzk5ZjA1NzQyYTQzOC4uZjczYWY2MDAx
MWMxNTAxZDA4MGIxZWUwNmJjN2IwYWE2NWMzNmQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuY3BwCkBAIC01Nyw2ICs1NywxNSBAQCBib29sIE11bHRpUHV0QnlPZmZzZXREYXRh
OjpyZWFsbG9jYXRlc1N0b3JhZ2UoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YTo6d3JpdGVzU3RydWN0dXJlcygpIGNvbnN0Cit7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gdmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlm
ICh2YXJpYW50c1tpXS53cml0ZXNTdHJ1Y3R1cmVzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEJyYW5jaFRhcmdldDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghYmxvY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGJjN2NmYjEyZDBhOGUyZDMyZTI3Mjk3Zjc0OGE2NTVl
MzUxNzI2NzYuLmFhYzNhNjM3YTA5NDE2NjQ1NDRjOTE5YmI3NDZlMGFkNTdiOWY0MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAi
REZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdW
YXJpYWJsZUFjY2Vzc0RhdGEuaCIKKyNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgogI2lu
Y2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIk9wZXJhbmRzLmgiCkBAIC05Miw2ICs5MywxMyBAQCBzdHJ1Y3QgTXVsdGlQdXRCeU9mZnNl
dERhdGEgewogICAgIGJvb2wgcmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29uc3Q7CiB9OwogCitzdHJ1
Y3QgTXVsdGlEZWxldGVCeU9mZnNldERhdGEgeworICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXI7CisgICAgVmVjdG9yPERlbGV0ZUJ5SWRWYXJpYW50LCAyPiB2YXJpYW50czsKKworICAgIGJv
b2wgd3JpdGVzU3RydWN0dXJlcygpIGNvbnN0OworfTsKKwogc3RydWN0IE1hdGNoU3RydWN0dXJl
VmFyaWFudCB7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmU7CiAgICAgYm9vbCBy
ZXN1bHQ7CkBAIC0yMDI5LDYgKzIwMzcsMTcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaGFz
TXVsdGlQdXRCeU9mZnNldERhdGEoKSk7CiAgICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8TXVs
dGlQdXRCeU9mZnNldERhdGEqPigpOwogICAgIH0KKworICAgIGJvb2wgaGFzTXVsdGlEZWxldGVC
eU9mZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gTXVsdGlEZWxldGVC
eU9mZnNldDsKKyAgICB9CisKKyAgICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSYgbXVsdGlEZWxl
dGVCeU9mZnNldERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc011bHRpRGVsZXRlQnlP
ZmZzZXREYXRhKCkpOworICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPE11bHRpRGVsZXRlQnlP
ZmZzZXREYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNNYXRjaFN0cnVjdHVyZURh
dGEoKQogICAgIHsKQEAgLTI5OTEsNiArMzAxMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc0Rl
bGV0ZUJ5U3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckRlbGV0
ZUJ5U3RhdHVzOworICAgIH0KKworICAgIERlbGV0ZUJ5U3RhdHVzKiBkZWxldGVCeVN0YXR1cygp
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzRGVsZXRlQnlTdGF0dXMoKSk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mby5hczxEZWxldGVCeVN0YXR1cyo+KCk7CisgICAgfQorCiAgICAgdm9pZCBk
dW1wQ2hpbGRyZW4oUHJpbnRTdHJlYW0mIG91dCkKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQx
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggM2ZlZjZiMzgx
ODUzZGQ1ZTcyYzk4YTRmMjhiOTBiYWZmNmM2YmU0YS4uNzgzNTI4ZWE1NDU2YmZlZDNhMmExYTg1
NTg5Y2UyZDhhMjM5YzYzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aApAQCAtMjUyLDYgKzI1Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhNdWx0aUdldEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhNdWx0aVB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oTXVsdGlE
ZWxldGVCeU9mZnNldCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1h
Y3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRWZWN0
b3JMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKQEAgLTUyNyw2ICs1MjgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmlsdGVyR2V0QnlTdGF0dXMsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oRmlsdGVyRGVsZXRlQnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICAvKiBEYXRhIHZpZXcgYWNjZXNzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEludCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgLyogVGhlIGdldHMgYXJlIG11c3QgZ2Vu
ZXJhdGUgZm9yIG5vdyBiZWNhdXNlIHRoZXkgZG8gYm91bmRzIGNoZWNrcyAqLyBcCiAgICAgbWFj
cm8oRGF0YVZpZXdHZXRGbG9hdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlh
NzNiMzQ5ZWU3NzliNWI5ODQuLmQwMGVhNjFlYTI5NWQxNjcwM2Y1NjY1NjhmYWU5OTcxNjUxYTEx
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtMTIyMCw2ICsxMjIwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC0yNTcwLDYgKzI1NzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgor
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91dENoZWNrcygpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzE2
YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uOGYxOTI2MDgwNTY2OTQ3YmFiYTAyZjE3NzZi
NTQwOTRiMTBlMGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4NCw2ICs5ODQsNyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAg
IGNhc2UgRGVsZXRlQnlJZDoKKyAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAg
ICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6CiAgICAgICAg
IGNhc2UgQ29tcGFyZUxlc3NFcToKQEAgLTEzOTUsNiArMTM5Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAg
ICAgY2FzZSBEYXRhVmlld1NldDoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUx
YjJkMTQyOWIyZTA1NjRlNjAxYTBjN2ZjOTY2NGI1NWVhYy4uZDZlN2M5ZTMwODU3MjI0YzgyNTg1
NjgyY2FiNmQwN2FlN2QxZTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdu
bwogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55
d2hlcmUgb3RoZXIgdGhhbiB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCiAg
ICAgICAgIC8vIHRvIGNhcHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wg
ZmxvdyBoZXJlIHRoZSB1c2VyIHB1dCB0aGVtLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MDgsNiArNjA5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0
ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEludmFsaWRh
dGlvblBvaW50OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zm
c2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIEdldEVudW1lcmFi
bGVMZW5ndGg6CiAgICAgY2FzZSBIYXNHZW5lcmljUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1
Y3R1cmVQcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDEyOTBkMTc5NzAzZTg2NzAyNmYzMDJiYzgwZTcy
YTAyNWY2OGJkMjQuLjhkYWIzZDA0YmMwMmViYWY2MDg4MzVhNDFiMzE5MjI5MTU4MWI3NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDE5MCw2ICs0MTkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0
dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQy
MDgsNiArNDIwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2Fz
ZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBj
YXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRv
bU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGM1N2E1NGY1YWRkZDQ1NGJjNDQ2OTJlNWI0ZTU4N2JmMDRhOWYx
ZDkuLmI4N2Y2ODcyMjc1ODAzYjk1NWI4ZGEwZGI2Yjc3OWM5NDVkNmY2YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTI1
NSw2ICs1MjU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTUyNjksNiArNTI3MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFyaXRo
SU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zm
c2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoK
ICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAKaW5kZXggN2M3YWJlODNlMjNhNWQ4OGEzMjA4M2E1MGVkZjM0ZDM2Y2Q2MzY5Yi4uOTJkMGM4
ZjFjNDU2MzczOTBjMDYzNGE4MTU4MjQyODVlOTdhM2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0y
ODcsNiArMjg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAg
ICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgIGNh
c2UgTXVsdGlQdXRCeU9mZnNldDoKKyAgICAgICAgICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlP
ZmZzZXQ6CiAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IHRoZXNlIHVzZXMuCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTM2Miw2
ICszNjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgY2FzZSBN
dWx0aVB1dEJ5T2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNl
dDoKICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY291bnQgdGhlc2UgdXNlcy4KICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAppbmRleCAzYTc3NzExNDVjNzYwYjM0ODJlN2Ux
YWM5YjY0OTkwMWRmZjE5ZDVhLi4wZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5
OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtMzEx
LDYgKzMxMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksICF2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+ZGZnU2hvdWxkV2F0
Y2goKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgorICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgp
LnZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0
YSgpLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCAhdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSB8fCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+ZGZn
U2hvdWxkV2F0Y2goKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG5v
ZGUtPnN0cnVjdHVyZVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9u
bHkgc3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJyYXku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJk
aW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2Fy
ZGluZ1BoYXNlLmNwcAppbmRleCA3NGVhNjE4ZTkwMTEyOWE1N2UyYzgzYmI4OTJhNzViN2I4MDYz
M2I3Li4wYzM1YTUzNjVjYzQ2ZWYzYzc4OTk0OGY0ZDJlNjBjY2YwMTc2Yjk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFz
ZS5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
ICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgY2FzZSBHZXRCeU9mZnNldDogewpAQCAtMzk5LDYgKzQwMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Cisg
ICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS5ub2RlKCkgPT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4
YzFjNjEwNTk5ZmQzMDI5OTczNDM2MGNiMjI3YWNiMi4uZTFmNTg5ZjI3MzQzYmZmOTM2MjE2MTg4
ZGFlM2I1Yzg2MzY4NjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtMjMzLDYgKzIzMyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgTXVsdGlH
ZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBNdWx0aURl
bGV0ZUJ5T2Zmc2V0OgogICAgIGNhc2UgVG9QcmltaXRpdmU6CiAgICAgY2FzZSBUb1Byb3BlcnR5
S2V5OgogICAgIGNhc2UgVGhyb3c6CkBAIC0zOTIsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIENyZWF0ZVRo
aXM6CiAgICAgY2FzZSBDcmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDc3
M2EwMDZlMDg3NDA5NzRmMDMzZTZjMmQ4MmRlYWM4YjJmZGM1NDcuLjMyZjliODgzNjcxYmNiOWNj
MzI1NDAyYjIzN2IxODFmZWYzZGEwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTExNzcsNiArMTE3Nyw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVNdWx0aVB1dEJ5
T2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5
T2Zmc2V0OgorICAgICAgICAgICAgY29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgICAgICAgICAg
Y29tcGlsZU1hdGNoU3RydWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NjksNiAr
MTU3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBj
b21waWxlRmlsdGVySUNTdGF0dXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IERhdGVHZXRJbnQzMk9yTmFOOgpAQCAtODEyOCw2ICs4MTMyLDEwNiBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAg
ICAgfQorCisgICAgdm9pZCBjb21waWxlTXVsdGlEZWxldGVCeU9mZnNldCgpCisgICAgeworICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIE11
bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbV9ub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0
RGF0YSgpOworCisgICAgICAgIHVuc2lnbmVkIG1pc3NDb25maWd1cmFibGUgPSAwOworICAgICAg
ICB1bnNpZ25lZCBtaXNzTm9uY29uZmlndXJhYmxlID0gMDsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgRGVsZXRl
QnlJZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBpZiAo
IXZhcmlhbnQubmV3U3RydWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5y
ZXN1bHQoKSkKKyAgICAgICAgICAgICAgICAgICAgKyttaXNzQ29uZmlndXJhYmxlOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKyttaXNzTm9uY29uZmlndXJhYmxl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgdW5pcXVlQ2Fz
ZUNvdW50ID0gZGF0YS52YXJpYW50cy5zaXplKCk7CisgICAgICAgIGlmIChtaXNzQ29uZmlndXJh
YmxlKQorICAgICAgICAgICAgdW5pcXVlQ2FzZUNvdW50IC09IG1pc3NDb25maWd1cmFibGUgLSAx
OworICAgICAgICBpZiAobWlzc05vbmNvbmZpZ3VyYWJsZSkKKyAgICAgICAgICAgIHVuaXF1ZUNh
c2VDb3VudCAtPSBtaXNzTm9uY29uZmlndXJhYmxlIC0gMTsKKyAgICAgICAgaW50IHRydWVCbG9j
ayA9IG1pc3NDb25maWd1cmFibGUgPyB1bmlxdWVDYXNlQ291bnQgLSAxIDogLTE7CisgICAgICAg
IGludCBmYWxzZUJsb2NrID0gbWlzc05vbmNvbmZpZ3VyYWJsZSA/IHVuaXF1ZUNhc2VDb3VudCAt
IDEgLSAhIW1pc3NDb25maWd1cmFibGUgOiAtMTsKKworICAgICAgICBWZWN0b3I8TEJhc2ljQmxv
Y2ssIDI+IGJsb2Nrcyh1bmlxdWVDYXNlQ291bnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBibG9ja3Muc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgYmxvY2tzW2ldID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZXhpdCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAg
ICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDI+IGNhc2VzOworICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFu
dHMuc2l6ZSgpLCBibG9jayA9IDA7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJp
YW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xk
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIGlmICh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIGNhc2Vz
LmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbYmxv
Y2srK10sIFdlaWdodCgxKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNh
c2VzLmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3Nb
dmFyaWFudC5yZXN1bHQoKSA/IHRydWVCbG9jayA6IGZhbHNlQmxvY2tdLCBXZWlnaHQoMSkpKTsK
KyAgICAgICAgfQorICAgICAgICBib29sIHN0cnVjdHVyZXNDaGVja2VkID0gbV9pbnRlcnByZXRl
ci5mb3JOb2RlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoYmFzZVNl
dCk7CisgICAgICAgIGVtaXRTd2l0Y2hGb3JNdWx0aUJ5T2Zmc2V0KGJhc2UsIHN0cnVjdHVyZXND
aGVja2VkLCBjYXNlcywgZXhpdCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5tX25leHRCbG9jazsKKworICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDI+IHJl
c3VsdHM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCks
IGJsb2NrID0gMDsgaS0tOykgeworICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFu
dCA9IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0
dXJlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGJsb2Nrc1tibG9ja10sIGJsb2NrICsgMSA8IGJsb2Nrcy5zaXplKCkgPyBibG9ja3Nb
YmxvY2sgKyAxXSA6IGV4aXQpOworCisgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSkgeworICAgICAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlOworCisgICAgICAgICAgICAg
ICAgaWYgKGlzSW5saW5lT2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICBzdG9yYWdlID0gYmFzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHN0b3JhZ2UgPSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNPYmplY3RfYnV0
dGVyZmx5KTsKKworICAgICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkobV9vdXQuaW50NjRaZXJv
LCBzdG9yYWdlLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQub2Zmc2V0KCkpOworCisg
ICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVU
eXBlRmxhZ3MoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5
cGVGbGFncygpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS50eXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS50eXBlKCkpOworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoCisgICAgICAgICAgICAg
ICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQu
bmV3U3RydWN0dXJlKCkpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IodmFy
aWFudC5yZXN1bHQoKSA/IG1fb3V0LmJvb2xlYW5UcnVlIDogbV9vdXQuYm9vbGVhbkZhbHNlKSk7
CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICArK2Js
b2NrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1pc3NOb25jb25maWd1cmFibGUpIHsKKyAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1tmYWxzZUJsb2NrXSk7CisgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKSk7CisgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobWlzc0NvbmZpZ3VyYWJsZSkgeworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tz
W3RydWVCbG9ja10sIGV4aXQpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5j
aG9yKG1fb3V0LmJvb2xlYW5UcnVlKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisgICAgICAgIH0KKworICAgICAgICBtX291dC5hcHBlbmRUbyhleGl0LCBjb250aW51
YXRpb24pOworICAgICAgICBpZiAoIXN0cnVjdHVyZXNDaGVja2VkKQorICAgICAgICAgICAgc3Bl
Y3VsYXRlKEJhZENhY2hlLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmJvb2xlYW5UcnVlKTsK
KyAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50
MzIsIHJlc3VsdHMpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1
cmUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
bmFwc2hvdEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuaAppbmRleCBmZmRlZTE3YWUyNGU1ZmY0OTY5YzFkNDJjZjA5MWMxYzFiOTQ4NTc5
Li4wOTI1MzhjZjVjYzA2ZGE2YTliMTY2ZjcyMjdkMTBhMzJiNmNiNzdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJIZWFwQW5hbHl6ZXIuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYTA5
YjA1NjVlYTI2YjQzMGUzOTJjYzRjNGI4NGFkZDc1YmMzZTRjNy4uMDE5MjIwYzQ1NTFmMTM0NDA1
YjRmMTJmOTI1YjZkYWY5YzQ1NmIwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAg
LTQ0NywxMSArNDQ3LDExIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlbGV0ZVByb3BlcnR5KAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1
dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
cnVlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKLQotICAg
IGlmIChwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCisgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVy
dHlOYW1lKSkgeworICAgICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0cnVlLCB0eXBlZEFy
cmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KICAgICAKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDUyMDhhY2RiYmRmZjg3MjUwYzIy
Y2FiMGM0ZWZkNjM0MTBkYWRlN2QuLjI3MWU4MWMxYTcwMDA5MjM3MTllMWE5Yjg5NDM1NjNjZjY4
MDRhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAg
LTIwMTEsMTIgKzIwMTEsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcgogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRj
aHBvaW50RmlyZSk7CiAgICAgICAgICAgICBzbG90LnNldEhpdChvZmZzZXQpOwotICAgICAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3Ry
dWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGlu
Z0hlYWRlcih0aGlzT2JqZWN0KSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0
LT5tX2J1dHRlcmZseSk7Ci0gICAgICAgICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVy
ZUFuZFNldEJ1dHRlcmZseSh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7
Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gaW52YWxpZE9mZnNldDsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5tYXhPZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCkgfHwgIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOwog
ICAgICAgICAgICAgdGhpc09iamVjdC0+c2V0U3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXgg
NzY3NTliNjUwMWM4NDY0MDQ5ZDlhZWE5M2U5Y2EzZmMzZTEzMDc4MC4uMWRiZGMwYzI3MWNiMzIx
YmJmYjhlMTM0M2I5MjFkNjRmZDkyOTZhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKQEAgLTQ3OCwxMCArNDc4LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
fHwgaGlqYWNrc0luZGV4aW5nSGVhZGVyKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzSW5k
ZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKikgY29uc3Q7Ci0gICAgYm9vbCBtYXlIYXZlSW5kZXhp
bmdIZWFkZXIoKSBjb25zdDsKLSAgICBib29sIGNhbkNhY2hlRGVsZXRlSUMoKSBjb25zdDsKLSAg
ICAKKyAgICBib29sIGhhc0luZGV4aW5nSGVhZGVyKGNvbnN0IEpTQ2VsbCopIGNvbnN0OyAgICAK
ICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QpOwogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwgUHJvcGVydHlOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMu
aAppbmRleCBiMmVkODU4YjhmNjg3MWQ1NzExZjA4OTQ2ZDk0MWU5NjIzYWFhMGVmLi41ZmE3MDEz
Y2I3ZmQ0OGFiZWRkODkyZDZiOWMxYjk3YTExNTE0Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCkBAIC0yMjgsMjIgKzIyOCw2IEBA
IGlubGluZSBib29sIFN0cnVjdHVyZTo6aGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKiBj
ZWxsKSBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihj
ZWxsKS0+bW9kZSgpID09IFdhc3RlZnVsVHlwZWRBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgU3Ry
dWN0dXJlOjptYXlIYXZlSW5kZXhpbmdIZWFkZXIoKSBjb25zdAotewotICAgIGlmIChoYXNJbmRl
eGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgaWYgKCFpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5l
IGJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZURlbGV0ZUlDKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
IWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlUeXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSk7Ci19Ci0K
IGlubGluZSBib29sIFN0cnVjdHVyZTo6bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkKIHsKICAgICByZXR1cm4gdHlwZUluZm8oKS5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKCkgJiYgZ2xvYmFsT2JqZWN0KCkgPT0gbGV4aWNhbEdsb2JhbE9i
amVjdDsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYmE1MTIyMDNjMGMwZjZhOWExMzMwOTIxYzY2OWFkNjc3NzNlMzYxYi4uY2NlNTBlOTQw
OGFlODkxNmFmMWJjMjBkNjBjNTkzNDg2NmI4MTUzOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAyMC0wMy0x
MyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAg
QWxsb3cgZGVsZXRlQnlJZCB0byBiZSBjYWNoZWQgaW4gdGhlIERGRworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjY0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXBy
b3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAobm9JbmxpbmUuYXNzZXJ0LmJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5lLmJs
YWNrYm94LmRvQWxsb2MxKToKKyAgICAgICAgKG5vSW5saW5lLmRvQWxsb2MxKToKKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzOiBBZGRlZC4K
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChibGFja2JveCk6CisgICAgICAgIChub0lubGlu
ZS5ibGFja2JveC5wb2x5dmFyaWFudCk6CisgICAgICAgIChkb0FsbG9jMSk6CisgICAgICAgIChu
b0lubGluZS5kb0FsbG9jMS5kb0FsbG9jMik6CisgICAgICAgIChub0lubGluZS5kb0FsbG9jMik6
CisgICAgICAgICogc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzOiBBZGRlZC4K
KyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChub0lubGluZS5hc3NlcnQuYXNzZXJ0X3Rocm93
cyk6CisgICAgICAgIChub0lubGluZS5hc3NlcnRfdGhyb3dzLmJsYWNrYm94KToKKyAgICAgICAg
KG5vSW5saW5lLmJsYWNrYm94LnRlc3RTaW5nbGVTdHJ1Y3R1cmUuZG9BbGxvYzEpOgorICAgICAg
ICAobm9JbmxpbmUuYmxhY2tib3gudGVzdFNpbmdsZVN0cnVjdHVyZSk6CisgICAgICAgIChub0lu
bGluZS50ZXN0U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUuZG9EZWxl
dGUyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNp
bmdsZVN0cnVjdHVyZS5kb0FsbG9jMik6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3Ry
dWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUpOgorICAgICAgICAobm9JbmxpbmUudGVz
dElubGluZVNpbmdsZVN0cnVjdHVyZS50ZXN0RXhpdC5kb0RlbGV0ZTMpOgorICAgICAgICAobm9J
bmxpbmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS50ZXN0RXhpdCk6CisgICAgICAgIChub0lu
bGluZS50ZXN0RXhpdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy5kb0FsbG9jNCk6CisgICAgICAg
IChub0lubGluZS50ZXN0RXhpdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcyk6CisgICAgICAgIChu
b0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0
cmljdC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5kb0FsbG9jNSk6CisgICAgICAgIChub0lubGluZS50
ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdC50ZXN0U2luZ2xl
U3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZS5kb0FsbG9jNik6CisgICAgICAgIChub0lubGlu
ZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05v
bkNvbmZpZ3VyYWJsZSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlz
c05vbkNvbmZpZ3VyYWJsZS50ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkuZG9BbGxvYzcpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUudGVz
dFNpbmdsZVN0cnVjdHVyZUVtcHR5KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1
Y3R1cmVFbXB0eS50ZXN0UG9seW1vcnBoaWMuZG9EZWxldGU4KToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eS50ZXN0UG9seW1vcnBoaWMpOgorICAgICAgICAobm9J
bmxpbmUudGVzdFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudC5kb0RlbGV0ZTkpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljLnRlc3RQb2x5dmFyaWFudC5wb2x5dmFyaWFudCk6
CisgICAgICAgIChub0lubGluZS50ZXN0UG9seW1vcnBoaWMudGVzdFBvbHl2YXJpYW50KToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RQb2x5dmFyaWFudC50ZXN0Q29uc3RhbnRGb2xkaW5nLmRvRGVs
ZXRlMTApOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHl2YXJpYW50LnRlc3RDb25zdGFudEZv
bGRpbmcpOgorICAgICAgICAobm9JbmxpbmUudGVzdENvbnN0YW50Rm9sZGluZy50ZXN0T2JqZWN0
U2lua2luZy5kb0FsbG9jMTEpOgorICAgICAgICAobm9JbmxpbmUudGVzdENvbnN0YW50Rm9sZGlu
Zy50ZXN0T2JqZWN0U2lua2luZyk6CisgICAgICAgIChub0lubGluZS50ZXN0T2JqZWN0U2lua2lu
Zy50ZXN0UHJveHkuZG9BbGxvYzEyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmplY3RTaW5r
aW5nLnRlc3RQcm94eS5ub0lubGluZS5kb0RlbGV0ZTEyKToKKyAgICAgICAgKG5vSW5saW5lLnRl
c3RPYmplY3RTaW5raW5nLnRlc3RQcm94eSk6CisgICAgICAgIChub0lubGluZS50ZXN0UHJveHku
dGVzdFR5cGVkQXJyYXkuZG9EZWxldGUxMik6CisgICAgICAgIChub0lubGluZS50ZXN0UHJveHku
dGVzdFR5cGVkQXJyYXkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFR5cGVkQXJyYXkudGVzdE1p
c3NNaXhlZC5kb0RlbGV0ZTEzKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RUeXBlZEFycmF5LnRl
c3RNaXNzTWl4ZWQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NNaXhlZC50ZXN0TWlzc05v
bk1peGVkLmRvRGVsZXRlMTQpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NNaXhlZC50ZXN0
TWlzc05vbk1peGVkKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RNaXNzTm9uTWl4ZWQudGVzdEJ5
VmFsLmRvRGVsZXRlMTUpOgorICAgICAgICAobm9JbmxpbmUudGVzdE1pc3NOb25NaXhlZC50ZXN0
QnlWYWwpOgorCiAyMDIwLTA0LTAzICBQYXVsbyBNYXRvcyAgPHBtYXRvc0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJlLWVuYWJsZSBwcmV2aW91c2x5IHNraXBwZWQgYXJtIHRlc3RzCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9kZWxldGUtcHJvcGVydHktYWxsb2NhdGlvbi1z
aW5raW5nLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWFsbG9j
YXRpb24tc2lua2luZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjYzNDY0ZjMxNzdjYjU5ZmE2Y2Y5MjRlMTQy
Mjc0NjU5NDA0MTM1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
ZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2luZy5qcwpAQCAtMCwwICsxLDI2IEBACisv
L0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIgorCitmdW5jdGlvbiBh
c3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lubGluZShhc3NlcnQpCisKK2Z1bmN0
aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4geAorfQorbm9JbmxpbmUoYmxhY2tib3gpCisK
K2Z1bmN0aW9uIGRvQWxsb2MxKCkgeworICAgIGxldCBvYmogPSB7fQorICAgIG9iai54ID0gNQor
ICAgIG9iai55ID0gNworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgYXNzZXJ0KGRl
bGV0ZSBvYmoueCkKKyAgICByZXR1cm4gb2JqLnkKK30KK25vSW5saW5lKGRvQWxsb2MxKQorCitm
b3IgKGxldCBpID0gMDsgaSA8IDUwMDAwMDAwOyArK2kpIHsKKyAgICBkb0FsbG9jMSgpCit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJv
cGVydHkuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJv
cGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY3Y2JjYmQ2OTliM2IwMzI2N2NiMDFmMTI3YTBmNTIyYzFl
YjVkMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2YXJp
YW50LWRlbGV0ZS1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDQxIEBACisvL0Agc2tpcCBpZiAkbW9k
ZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIgorCitmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9u
KSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYXNzZXJ0
aW9uIGZhaWxlZCIpCit9CisKK2Z1bmN0aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4geAor
fQorbm9JbmxpbmUoYmxhY2tib3gpCisKK2Z1bmN0aW9uIHBvbHl2YXJpYW50KHgpIHsKKyAgICBh
c3NlcnQoZGVsZXRlIHgueCkKK30KKworZnVuY3Rpb24gZG9BbGxvYzEoKSB7CisgICAgbGV0IG9i
aiA9IHt9CisgICAgb2JqLnggPSA1CisgICAgb2JqLnkgPSA3CisgICAgb2JqLnkgPSBibGFja2Jv
eChvYmoueSkKKyAgICBwb2x5dmFyaWFudChvYmopCisgICAgcmV0dXJuIG9iai55Cit9Citub0lu
bGluZShkb0FsbG9jMSkKKworZnVuY3Rpb24gZG9BbGxvYzIoKSB7CisgICAgbGV0IG9iaiA9IHt9
CisgICAgb2JqLnggPSA1CisgICAgb2JqLmIgPSA5CisgICAgb2JqLnkgPSA3CisgICAgb2JqLnkg
PSBibGFja2JveChvYmoueSkKKyAgICBwb2x5dmFyaWFudChvYmopCisgICAgcmV0dXJuIG9iai55
Cit9Citub0lubGluZShkb0FsbG9jMikKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwMDsg
KytpKSB7CisgICAgZG9BbGxvYzEoKQorICAgIGRvQWxsb2MyKCkKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzIGIvSlNUZXN0cy9zdHJl
c3MvZGVsZXRlLXByb3BlcnR5LWRmZy1pbmxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNiZWU3YmNjMTJj
OWQyZGQ3YTQyODE2OTUxNTBmM2ZmZGIzNmExMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzCkBAIC0wLDAgKzEsNDA5IEBACitm
dW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uKSB7CisgICAgaWYgKCFjb25kaXRpb24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lubGluZShhc3NlcnQp
CisKK2Z1bmN0aW9uIGFzc2VydF90aHJvd3MoZikgeworICAgIHRyeSB7CisgICAgICAgIGYoKQor
ICAgIH0gY2F0Y2ggeworICAgICAgICByZXR1cm4KKyAgICB9CisgICAgdGhyb3cgbmV3IEVycm9y
KCJhc3NlcnRpb24gZmFpbGVkIikKK30KK25vSW5saW5lKGFzc2VydF90aHJvd3MpCisKK2Z1bmN0
aW9uIGJsYWNrYm94KHgpIHsKKyAgICByZXR1cm4geAorfQorbm9JbmxpbmUoYmxhY2tib3gpCisK
K2Z1bmN0aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1cmUoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzEo
KSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDUKKyAgICAgICAgb2Jq
LnkgPSA3CisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFzc2VydChk
ZWxldGUgb2JqLngpCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShk
b0FsbG9jMSkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAg
ICAgIGRvQWxsb2MxKCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlKQor
CitmdW5jdGlvbiB0ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKCkgeworICAgIGZ1bmN0aW9uIGRv
RGVsZXRlMihvKSB7CisgICAgICAgIGFzc2VydChkZWxldGUgby54KQorICAgIH0KKworICAgIGZ1
bmN0aW9uIGRvQWxsb2MyKCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLngg
PSA1CisgICAgICAgIG9iai55ID0gNworICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQor
ICAgICAgICBkb0RlbGV0ZTIob2JqKQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAg
bm9JbmxpbmUoZG9BbGxvYzIpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kpIHsK
KyAgICAgICAgZG9EZWxldGUyKHsgaSwgZjogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBl
OiA0IH0pCisgICAgICAgIGRvRGVsZXRlMih7IGksIGQ6IDQgfSkKKyAgICAgICAgZG9EZWxldGUy
KHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBiOiA0IH0pCisgICAgICAgIGRv
RGVsZXRlMih7IGksIGE6IDQgfSkKKyAgICAgICAgZG9BbGxvYzIoKQorICAgIH0KKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2MyKCkKKyAg
ICB9Cit9Citub0lubGluZSh0ZXN0SW5saW5lU2luZ2xlU3RydWN0dXJlKQorCitmdW5jdGlvbiB0
ZXN0RXhpdCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTMob2JqKSB7CisgICAgICAgIGFzc2Vy
dChkZWxldGUgb2JqLnkpCisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMykKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUzKHsgaSwg
YTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAg
ICAgICBkb0RlbGV0ZTMoeyBpLCBmOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGU6IDQg
fSkKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBp
LCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGI6IDQgfSkKKyAgICAgICAgZG9EZWxl
dGUzKHsgaSwgYTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAw
MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9Cit9Citub0lu
bGluZSh0ZXN0RXhpdCkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MoKSB7Cisg
ICAgZnVuY3Rpb24gZG9BbGxvYzQoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBv
YmoueCA9IDUKKyAgICAgICAgb2JqLnkgPSA3CisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2Jq
LnkpCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLnopCisgICAgICAgIHJldHVybiBvYmoueQor
ICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jNCkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxsb2M0KCkKKyAgICB9Cit9Citub0lubGluZSh0
ZXN0U2luZ2xlU3RydWN0dXJlTWlzcykKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZU1p
c3NTdHJpY3QoKSB7CisgICAgInVzZSBzdHJpY3QiCisKKyAgICBmdW5jdGlvbiBkb0FsbG9jNSgp
IHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai55ID0gNQorICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkob2JqLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTog
ZmFsc2UsCisgICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgb2JqLnkg
PSBibGFja2JveChvYmoueSkKKyAgICAgICAgYXNzZXJ0X3Rocm93cygoKSA9PiBkZWxldGUgb2Jq
LngpCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jNSkK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvQWxs
b2M1KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCkK
KworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUoKSB7Cisg
ICAgZnVuY3Rpb24gZG9BbGxvYzYoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBv
YmoueSA9IDUKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgIngiLCB7CisgICAg
ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAg
ICAgIH0pCisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFzc2VydCgh
KGRlbGV0ZSBvYmoueCkpCisgICAgICAgIHJldHVybiBvYmoueQorICAgIH0KKyAgICBub0lubGlu
ZShkb0FsbG9jNikKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7Cisg
ICAgICAgIGRvQWxsb2M2KCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0U2luZ2xlU3RydWN0dXJl
TWlzc05vbkNvbmZpZ3VyYWJsZSkKKworZnVuY3Rpb24gdGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5
KCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M3KCkgeworICAgICAgICBsZXQgb2JqID0geyBhOiAx
LCBiOiAyfQorICAgICAgICBvYmpbMV0gPSA1CisgICAgICAgIGRlbGV0ZSBvYmpbMV0KKyAgICAg
ICAgYmxhY2tib3goKCkgPT4gb2JqLnggPSA1KSgpCisgICAgICAgIGFzc2VydChPYmplY3Qua2V5
cyhvYmopLmxlbmd0aCA9PSAzKQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai5hKQorICAgICAg
ICBhc3NlcnQoZGVsZXRlIG9iai5iKQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAg
ICAgICBhc3NlcnQoT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMCkKKyAgICAgICAgb2JqLngg
PSA3CisgICAgICAgIHJldHVybiBvYmoKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzcpCisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9j
NygpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5KQorCitmdW5j
dGlvbiB0ZXN0UG9seW1vcnBoaWMoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGU4KG9iaikgewor
ICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgICAgICByZXR1cm4gb2JqCisgICAgfQor
ICAgIG5vSW5saW5lKGRvRGVsZXRlOCkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgKytp
KSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOCh7IGksIGY6IDQg
fSkKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlOCh7IGksIGU6IDQsIHk6IDEwIH0pLnkgPT09IHVu
ZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0
ZTgoeyBpLCBjOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOCh7IGksIGI6IDQgfSkKKyAgICAgICAg
YXNzZXJ0KGRvRGVsZXRlOCh7IGksIGE6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAg
ICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBk
b0RlbGV0ZTgoeyBpLCBhOiA0IH0pCisgICAgfQorfQorbm9JbmxpbmUodGVzdFBvbHltb3JwaGlj
KQorCitmdW5jdGlvbiB0ZXN0UG9seXZhcmlhbnQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGU5
KG9iaikgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgICAgICByZXR1cm4gb2Jq
CisgICAgfQorCisgICAgZnVuY3Rpb24gcG9seXZhcmlhbnQob2JqKSB7CisgICAgICAgIHJldHVy
biBkb0RlbGV0ZTkob2JqKQorICAgIH0KKyAgICBub0lubGluZShwb2x5dmFyaWFudCkKKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgIHBvbHl2YXJpYW50KHsgaSwg
YTogNCB9KQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsK
KyAgICAgICAgZG9EZWxldGU5KHsgaSwgZjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU5
KHsgaSwgZTogNCwgeTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0RlbGV0ZTko
eyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGM6IDQgfSkKKyAgICAgICAgZG9E
ZWxldGU5KHsgaSwgYjogNCB9KQorICAgICAgICBhc3NlcnQoZG9EZWxldGU5KHsgaSwgYTogNCwg
eTogMTAgfSkueSA9PT0gdW5kZWZpbmVkKQorICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIHBvbHl2YXJpYW50KHsgaSwgYTogNCB9KQorICAg
IH0KK30KK25vSW5saW5lKHRlc3RQb2x5dmFyaWFudCkKKworZnVuY3Rpb24gdGVzdENvbnN0YW50
Rm9sZGluZygpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTEwKG9iaikgeworICAgICAgICBpZiAo
JHZtLmRmZ1RydWUoKSkgeworICAgICAgICAgICAgb2JqID0geyBpOiAwLCBhOiA1LCB5OiAyMCB9
CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICAgICAgYXNzZXJ0
KChkZWxldGUgb2JqLnopICsgNSA9PSA2KQorICAgICAgICByZXR1cm4gb2JqCisgICAgfQorICAg
IG5vSW5saW5lKGRvRGVsZXRlMTApCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7
ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUxMCh7IGksIGE6IDQsIHk6IDEwIH0pLnkg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgZG9EZWxldGUxMCh7IGksIGY6IDQgfSkKKyAgICAgICAg
YXNzZXJ0KGRvRGVsZXRlMTAoeyBpLCBlOiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisg
ICAgICAgIGRvRGVsZXRlMTAoeyBpLCBkOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBj
OiA0IH0pCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBiOiA0IH0pCisgICAgfQorfQorbm9Jbmxp
bmUodGVzdENvbnN0YW50Rm9sZGluZykKKworZnVuY3Rpb24gdGVzdE9iamVjdFNpbmtpbmcoKSB7
CisgICAgZnVuY3Rpb24gZG9BbGxvYzExKGkpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAg
ICAgIG9iai54ID0gMQorICAgICAgICBvYmoueSA9IDIKKyAgICAgICAgaWYgKGkgPT0gMCkKKyAg
ICAgICAgICAgIG9iai5hID0gMworICAgICAgICBlbHNlIGlmIChpID09IDEpCisgICAgICAgICAg
ICBvYmouYiA9IDMKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAzKQorICAgICAgICAgICAgb2JqLmMg
PSAzCisgICAgICAgIGRlbGV0ZSBvYmoueAorICAgICAgICBhc3NlcnQoKGRlbGV0ZSBvYmoueCkg
KyA1ID09IDYpCisgICAgICAgIHJldHVybiBvYmoueQorCisgICAgfQorICAgIG5vSW5saW5lKGRv
QWxsb2MxMSkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAg
ICAgIGFzc2VydChkb0FsbG9jMTEoaSAlIDMpID09IDIpCisgICAgfQorICAgIGFzc2VydChkb0Fs
bG9jMTEoNCkgPT0gMikKK30KK25vSW5saW5lKHRlc3RPYmplY3RTaW5raW5nKQorCitmdW5jdGlv
biB0ZXN0UHJveHkoKSB7CisgICAgZnVuY3Rpb24gZG9BbGxvYzEyKCkgeworICAgICAgICBsZXQg
b2JqID0ge30KKyAgICAgICAgb2JqLnggPSAxCisgICAgICAgIG9iai5jb3VudCA9IDAKKworICAg
ICAgICBjb25zdCBoYW5kbGVyID0geworICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwg
cHJvcCkgeworICAgICAgICAgICAgYXNzZXJ0KHByb3AgPT0gInoiKQorICAgICAgICAgICAgZGVs
ZXRlIHRhcmdldC56CisgICAgICAgICAgICArK29iai5jb3VudAorICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJveHkob2JqLCBoYW5kbGVyKQorCisgICAgfQor
ICAgIG5vSW5saW5lKGRvQWxsb2MxMikKKworICAgIGZ1bmN0aW9uIGRvRGVsZXRlMTIob2JqKSB7
CisgICAgICAgIGRlbGV0ZSBvYmouegorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEyKQor
CisgICAgbGV0IGZvbyA9IGRvQWxsb2MxMigpCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUxMihmb28pCisgICAgfQorICAgIGFzc2VydChm
b28uY291bnQgPSAxMDAwMDAwKQorfQorbm9JbmxpbmUodGVzdFByb3h5KQorCitmdW5jdGlvbiB0
ZXN0VHlwZWRBcnJheSgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTEyKG9iaikgeworICAgICAg
ICBvYmouY29uc3RydWN0b3IgPSBudWxsCisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLmNvbnN0
cnVjdG9yKQorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEyKQorCisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUxMihuZXcgVWludDhB
cnJheSgpKQorICAgIH0KKworICAgIGxldCBmb28gPSBuZXcgVWludDhBcnJheSgxMik7CisgICAg
dHJhbnNmZXJBcnJheUJ1ZmZlcihmb28uYnVmZmVyKQorICAgIGRvRGVsZXRlMTIoZm9vKQorICAg
IGFzc2VydF90aHJvd3MoKCkgPT4gZGVsZXRlIGZvb1swXSkKK30KK25vSW5saW5lKHRlc3RUeXBl
ZEFycmF5KQorCitmdW5jdGlvbiB0ZXN0TWlzc01peGVkKCkgeworICAgIGZ1bmN0aW9uIGRvRGVs
ZXRlMTMob2JqKSB7CisgICAgICAgIHJldHVybiBkZWxldGUgb2JqLngKKyAgICB9CisgICAgbm9J
bmxpbmUoZG9EZWxldGUxMykKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTEzKHsgeTogNCB9KSkKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4IiwgeworICAgICAg
ICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MQorICAgICAg
ICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTMoZm9vKSkKKyAgICB9Cit9Citub0lubGlu
ZSh0ZXN0TWlzc01peGVkKQorCitmdW5jdGlvbiB0ZXN0TWlzc05vbk1peGVkKCkgeworICAgIGZ1
bmN0aW9uIGRvRGVsZXRlMTQob2JqKSB7CisgICAgICAgIHJldHVybiBkZWxldGUgb2JqLngKKyAg
ICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxNCkKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDAwMDsgKytpKSB7CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoZm9vLCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2Us
CisgICAgICAgICAgICB2YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0Rl
bGV0ZTE0KGZvbykpCisKKyAgICAgICAgZm9vID0geyB5OiA0IH0KKyAgICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNl
LAorICAgICAgICAgICAgdmFsdWU6IDQwCisgICAgICAgIH0pCisgICAgICAgIGFzc2VydCghZG9E
ZWxldGUxNChmb28pKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RNaXNzTm9uTWl4ZWQpCisKK2Z1
bmN0aW9uIHRlc3RCeVZhbCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTE1KG9iaikgeworICAg
ICAgICByZXR1cm4gZGVsZXRlIG9ialsieCJdCisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRl
MTUpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXNz
ZXJ0KGRvRGVsZXRlMTUoeyB5OiA0IH0pKQorICAgICAgICBsZXQgZm9vID0ge30KKyAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAgICBjb25maWd1cmFi
bGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0pCisgICAgICAgIGFz
c2VydCghZG9EZWxldGUxNShmb28pKQorCisgICAgICAgIGZvbyA9IHsgeDogNCB9CisgICAgICAg
IGFzc2VydChkb0RlbGV0ZTE1KGZvbykpCisgICAgICAgIGFzc2VydChmb28ueCA9PSB1bmRlZmlu
ZWQpCisgICAgICAgIGdjKCkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0QnlWYWwpCisKK3Rlc3RC
eVZhbCgpCit0ZXN0TWlzc01peGVkKCkKK3Rlc3RNaXNzTm9uTWl4ZWQoKQordGVzdFR5cGVkQXJy
YXkoKQordGVzdFByb3h5KCkKK3Rlc3RTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdElubGluZVNpbmds
ZVN0cnVjdHVyZSgpCit0ZXN0RXhpdCgpCit0ZXN0U2luZ2xlU3RydWN0dXJlTWlzcygpCit0ZXN0
U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCgpCit0ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNv
bmZpZ3VyYWJsZSgpCit0ZXN0U2luZ2xlU3RydWN0dXJlRW1wdHkoKQordGVzdFBvbHltb3JwaGlj
KCkKK3Rlc3RQb2x5dmFyaWFudCgpCit0ZXN0Q29uc3RhbnRGb2xkaW5nKCkKK3Rlc3RPYmplY3RT
aW5raW5nKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395571</attachid>
            <date>2020-04-06 09:14:30 -0700</date>
            <delta_ts>2020-04-06 11:48:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208664-20200406121429.patch</filename>
            <type>text/plain</type>
            <size>100687</size>
            <attacher name="Justin Michaud">justin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
N2ZmNWU4OGUwOTZmOTY2NzA4MTcyNTdiZGIxMDBjZWJjM2MzNGM4Li5iZjBiODc0YjJhN2UxNTM2
OGJhZmM2ZGNjZDY1NjA3ZDM0YzY3YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMDQtMDYgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRA
YXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGRlbGV0ZUJ5SWQgdG8gYmUgY2FjaGVkIGluIHRo
ZSBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY2NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFdoZW4g
d2Ugc2VlIHRoYXQgdGhlIGRlbGV0ZUJ5SWQgaW5saW5lIGNhY2hlIG9ubHkgc2F3IG9uZSBzdHJ1
Y3R1cmUsIHdlIGlubGluZSBpdCBpbnRvIHRoZSBERkcuIFRoaXMgaW52b2x2ZXMKKyAgICAgICAg
Y3JlYXRpbmcgYSBuZXcgbm9kZSwgRmlsdGVyRGVsZXRlQnlTdGF0dXMsIGFuZCB0aGVuIHR1cm5p
bmcgdGhlc2UgRGVsZXRlQnlJZCBub2RlcyBpbnRvIGEgRmlsdGVyRGVsZXRlQnlTdGF0dXMsCisg
ICAgICAgIENoZWNrU3RydWN0dXJlLCBQdXRCeU9mZnNldCwgdGhlbiBQdXRTdHJ1Y3R1cmUgKG9y
IGp1c3QgYSBDaGVja1N0cnVjdHVyZSBpbiB0aGUgY2FzZSBvZiBhIG1pc3MpLiBUaGUgbG9naWMg
Zm9yIAorICAgICAgICBwZXNzaW1pc2luZyB0aGlzIG9wdGltaXphdGlvbiBpcyB0aGUgc2FtZSBh
cyBmb3IgUHV0QnlJZCwgZ2l2aW5nIGlubGluZWQgZnVuY3Rpb25zIHRoZSBvcHBvcnR1bml0eSB0
byB1c2Ugb25seSAKKyAgICAgICAgdGhlIERGRyBwcm9maWxpbmcgaW5mb3JtYXRpb24sIHdoaWxl
IGV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHRoZSBERkcrQmFzZWxpbmUgaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgVGhpcyBhbHNvIGFkZHMgYSBNdWx0aURlbGV0ZUJ5T2Zmc2V0IG5vZGUsIGZvciB0aGUg
Y2FzZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBzdHJ1Y3R1cmVzIHNlZW4gYnkgdGhlIGRlbGV0
ZS4gSWYKKyAgICAgICAgYWxsIG9mIHRoZSBjYXNlcyBhcmUgdGhlIHNhbWUga2luZCBvZiBtaXNz
LCB0aGVuIHdlIG9ubHkgZW1pdCBhIENoZWNrU3RydWN0dXJlIGFuZCBjb25zdGFudC4KKworICAg
ICAgICBGaW5hbGx5LCBpZiB3ZSBzZWUgYSBkZWxldGUgYnkgdmFsIHdpdGggYSBzaW5nbGUgaWRl
bnRpZmllciwgd2UgaW5saW5lIHRoYXQgdG9vLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3Zl
cyBhIGRlYWQgY29kZSBwYXRoIGZyb20gZGVsZXRlUHJvcGVydHkgdGhhdCBjaGVja3MgaWYgd2Ug
bmVlZCB0byBudWtlIHRoZSBvYmplY3QncyBidXR0ZXJmbHkuIAorICAgICAgICBUaGlzIGFsc28g
Zml4ZXMgYSBidWcgd2hlcmUgd2Ugd2VyZSBjaGVja2luZyB0aGUgbmV1dGVyaW5nIHN0YXR1cyBv
ZiB0eXBlZCBhcnJheXMgZm9yIG5hbWVkIHByb3BlcnRpZXMgd2hlbiB3ZSBzaG91bGQKKyAgICAg
ICAgb25seSBjaGVjayBmb3IgaW5kZXhlZCBwcm9wZXJ0aWVzLiBUaGUgYmVoYXZpb3Igb2YgdGhp
cyBub3cgbWF0Y2hlcyBmb3IgYWxsIHRpZXJzIGluY2x1ZGluZyB3aGVuIGNhY2hlZC4KKworICAg
ICAgICBUaGUgYmVuY2htYXJrIHNob3dzIGEgMnggaW1wcm92ZW1lbnQgb24gcG9seXZhcmlhbnQt
ZGVsZXRlLXByb3BlcnR5LCBhbmQgYSA1MCUgaW1wcm92ZW1lbnQgb24gZGVsZXRlLXByb3BlcnR5
LWFsbG9jYXRpb24tc2lua2luZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6CisgICAgICAg
IChKU0M6OkFjY2Vzc0Nhc2U6OmNyZWF0ZURlbGV0ZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nh
c2U6OmdlbmVyYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcCk6CisgICAgICAgICogYnl0ZWNv
ZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OkRlbGV0ZUJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZh
cmlhbnQ6On5EZWxldGVCeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJp
YW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6YXR0ZW1w
dFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6d3JpdGVzU3RydWN0
dXJlcyBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50Ojp2aXNpdEFnZ3Jl
Z2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6Cisg
ICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJ
ZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlbGV0
ZUJ5SWRWYXJpYW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6
b2xkU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om5l
d1N0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjpyZXN1
bHQgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWxldGVCeUlkVmFyaWFudDo6b2Zmc2V0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6OmlzUHJvcGVydHlVbnNldCBjb25z
dCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RGVsZXRlQnlJZFZhcmlhbnQ6Om92ZXJsYXBzKToKKyAgICAgICAgKiBi
eXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWxldGVC
eVN0YXR1czo6YXBwZW5kVmFyaWFudCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpj
b21wdXRlRm9yQmFzZWxpbmUpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6RGVsZXRl
QnlTdGF0dXMpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0YXR1
czo6Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzbG93VmVyc2lv
biBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpEZWxldGVCeVN0
YXR1czo6c2luZ2xlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3Rh
dHVzOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjptYXJr
SWZDaGVhcCk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpmaW5hbGl6ZSk6CisgICAg
ICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29k
ZS9EZWxldGVCeVN0YXR1cy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01h
cC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAgICAo
SlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpSZWNvcmRl
ZFN0YXR1c2VzOjphZGREZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3Rh
dHVzZXM6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6
bWFya0lmQ2hlYXApOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoKKyAg
ICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6Zm9yRWFjaFZlY3Rvcik6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZmlsdGVySUNTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRz
KToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6ZW1pdERlbGV0ZUJ5
T2Zmc2V0KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
Ojpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Tm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TXVsdGlEZWxldGVCeU9mZnNldERhdGE6Ondy
aXRlc1N0cnVjdHVyZXMgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Om11bHRpRGVsZXRlQnlPZmZzZXREYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNEZWxldGVCeVN0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
ZGVsZXRlQnlTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNo
ZWNrcyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRp
ZnlSZWR1bmRhbnRBcnJheUNoZWNrcyk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXlIYXZl
SW5kZXhpbmdIZWFkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmNhbkNhY2hlRGVsZXRlSUMgY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA0LTA2ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gUHV0IGVuc3VyZVN0
aWxsQWxpdmVIZXJlIGZvciBJbnRlZ2VyIFR5cGVkQXJyYXlzIGluIEdldEJ5VmFsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDUxMjdhZmY0OTQ3ZGQ4NGI4ZDJhYzk4MjMz
ODI3MzZmMDk3NzY0ZS4uYjU3YTAyNzZiM2IzZDk1NWIyYmZhMjU5Y2E0YTNiN2VhMDkxNTBhMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTAxLDYgKzUwMSw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUv
Q29kZVR5cGUuaAogICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKICAgICBieXRlY29kZS9E
YXRhRm9ybWF0LmgKKyAgICBieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCisgICAgYnl0ZWNv
ZGUvRGVsZXRlQnlTdGF0dXMuaAogICAgIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuaAog
ICAgIGJ5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9D
b2RlQmxvY2tFZGdlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTkxYTFmMjFk
ZDNjYmUwMDAzYTU3N2Q5YjMzZjZhMzk5MDUwNWI4Yy4uMTRhYmUyOGI2MmJhNjE4MjI0NjUwNjY3
MDg3OTZhNTMyOTE2MmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzgs
NyArMTE3OCw5IEBACiAJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZE
QkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMwMDVF
NjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyog
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OworCQk3MzExRkEzMjI0MERCMUQz
MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVC
eUlkVmFyaWFudC5oICovOyB9OwogCQk3MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRl
UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzNBRDA2Mjky
M0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVs
ZXRlQnlTdGF0dXMuaCAqLzsgfTsKIAkJNzNFMzc5OTQyMkUwRUY2NTAwOTMzNTY1IC8qIEIzUmVk
dWNlTG9vcFN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3M0UzNzk5MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGgu
aCAqLzsgfTsKIAkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI3OTU4
RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MDA4MTM5MUU5NUE4RUMwMDUy
RDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTc0LDcgKzM5
NzYsMTEgQEAKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0IxRDBE
MzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUFGN0NDMUQwRDMxOEIwMDVF
NjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxMUZBMzEyNDBEQjFEMzAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTFGQTMzMjQwREIyNDkwMDNENDhEQiAvKiBEZWxldGVC
eUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVCeUlkVmFyaWFudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTczMTkwRDk2MjQwMDkzNDkwMEY4OTFDOSAv
KiBEZWxldGVCeVN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxldGVCeVN0YXR1cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczNEI2NTU0MjNGNEEzMzEwMEEwNjlE
MSAvKiBEZWxldGVQcm9wZXJ0eVNsb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVsZXRlUHJvcGVydHlTbG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcz
QUQwNjI4MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEZWxldGVCeVN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3M0UzNzk5
MzIyRTBFRjRGMDA5MzM1NjUgLyogQjNSZWR1Y2VMb29wU3RyZW5ndGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VMb29wU3RyZW5ndGguaDsgcGF0aCA9IGIzL0Iz
UmVkdWNlTG9vcFN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczRTM3
OTk1MjJFMEVGOTEwMDkzMzU2NSAvKiBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHBh
dGggPSBiMy9CM1JlZHVjZUxvb3BTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc3QjI1Q0IyQzMwOTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODI1MSw2ICs4MjU3LDEwIEBACiAJCQkJMEZDNzEyREQxN0NE
ODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oICovLAogCQkJCUZF
NTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwICovLAogCQkJ
CUZFNTA2ODY0MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuaCAqLywKKwkJ
CQk3MzExRkEzMzI0MERCMjQ5MDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuY3BwICovLAor
CQkJCTczMTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovLAor
CQkJCTczMTkwRDk2MjQwMDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0YXR1cy5jcHAgKi8sCisJ
CQkJNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5U3RhdHVzLmggKi8sCiAJCQkJ
MEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCAqLywKIAkJCQkw
RkJDMEFFNTE0OTZDN0MxMDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuaCAqLywKIAkJCQkwRjJF
QkJBQTFERURGOTRFMDA5OTAzNjkgLyogRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgKi8sCkBAIC05
MjI0LDYgKzkyMzQsOCBAQAogCQkJCUZFNTA2ODY1MUFFMjQ2MzkwMDA5REFCNyAvKiBEZWZlcnJl
ZFNvdXJjZUR1bXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ3M0RBNEE0NzY0QzQ1RkU4NzFCMDQ4
NSAvKiBEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkI3
M0JCMURFRjg2NDUwMDJDMDA5RSAvKiBEZWxldGVBbGxDb2RlRWZmb3J0LmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZhcmlhbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTczQUQwNjI5MjNGRjY2MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERl
bGV0ZVByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQxOTJDRDAw
NTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc3QTQyM0Ux
N0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYTc3N2I5YjNjNzk4MjY2NWY3OWQ1ZDdlOGU1ZDE0
OWMzM2Q2NDZkMC4uOGExNzM3YmVjNGJlNGM2MTkxNTk3NDFhNDkwYTBhMmM2ZjAzOTJiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjIwLDYgKzIyMCw4IEBAIGJ5dGVjb2RlL0RG
R0V4aXRQcm9maWxlLmNwcAogYnl0ZWNvZGUvRGF0YUZvcm1hdC5jcHAKIGJ5dGVjb2RlL0RlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKIGJ5dGVjb2RlL0RlZmVycmVkU291cmNlRHVtcC5j
cHAKK2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAorYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlh
bnQuY3BwCiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAogYnl0ZWNvZGUvRXZhbENv
ZGVCbG9jay5jcHAKIGJ5dGVjb2RlL0V4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggZjZmN2Jk
MWNlNmY0YjA2ZjcxNDBiMTYyNDdmMTAwZjI0YzEzNzQzMy4uZDJlYWE0N2ZhM2UwOTQwYjg1ZjAx
MDkwMDk2NGVhNmRjZjE3ZWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcApAQCAtMTI5LDEwICsxMjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZXNzQ2FzZT4gQWNjZXNzQ2FzZTo6Y3JlYXRlRGVsZXRlKAogICAgIFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91
c0lEKCkpOwotICAgIC8vIFdlIGRvIG5vdCBjYWNoZSB0aGlzIGNhc2Ugc28gdGhhdCB3ZSBkbyBu
b3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLCBlLmcuIFR5cGVkQXJyYXkgY2VsbHMgcmVxdWly
ZSBhIGNoZWNrIGZvciBuZXV0ZXJpbmcgc3RhdHVzLgotICAgIC8vIFNlZSB0aGUgRGVsZXRlIGNv
ZGUgYmVsb3cuCi0gICAgaWYgKCFuZXdTdHJ1Y3R1cmUtPmNhbkNhY2hlRGVsZXRlSUMoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKCFuZXdTdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgfHwgb2xkU3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+KG5ldyBBY2Nlc3NDYXNlKHZtLCBvd25l
ciwgRGVsZXRlLCBpZGVudGlmaWVyLCBvZmZzZXQsIG5ld1N0cnVjdHVyZSwgeyB9LCB7IH0pKTsK
IH0KIApAQCAtMTk1MCwxOCArMTk0Nyw5IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBs
KEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvcjo6UHJlc2VydmVkU3RhdGUgcHJlc2VydmVkU3RhdGUgPQogICAgICAgICAgICAgYWxs
b2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lz
dGVyQWxsb2NhdG9yOjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CiAKLSAgICAgICAg
Ym9vbCBoYXNJbmRleGluZ0hlYWRlciA9IG5ld1N0cnVjdHVyZSgpLT5tYXlIYXZlSW5kZXhpbmdI
ZWFkZXIoKTsKLSAgICAgICAgLy8gV2UgZG8gbm90IGNhY2hlIHRoaXMgY2FzZSB5ZXQgc28gdGhh
dCB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayB0aGUganNjZWxsLgotICAgICAgICAvLyBTZWUgU3Ry
dWN0dXJlOjpoYXNJbmRleGluZ0hlYWRlciBhbmQgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5Lgot
ICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlKCktPmNhbkNhY2hlRGVsZXRlSUMoKSk7Ci0gICAg
ICAgIC8vIENsZWFyIHRoZSBidXR0ZXJmbHkgaWYgd2UgaGF2ZSBubyBwcm9wZXJ0aWVzLCBzaW5j
ZSBvdXIgcHV0IGNvZGUgZXhwZWN0cyB0aGlzLgotICAgICAgICBib29sIHNob3VsZE51a2VTdHJ1
Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSA9ICFuZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSAmJiBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAmJiAhaGFzSW5kZXhpbmdI
ZWFkZXI7Ci0KICAgICAgICAgaml0Lm1vdmVWYWx1ZShKU1ZhbHVlKCksIHZhbHVlUmVncyk7CiAK
LSAgICAgICAgaWYgKHNob3VsZE51a2VTdHJ1Y3R1cmVBbmRDbGVhckJ1dHRlcmZseSkgewotICAg
ICAgICAgICAgaml0Lm51a2VTdHJ1Y3R1cmVBbmRTdG9yZUJ1dHRlcmZseSh2bSwgdmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgYmFzZUdQUik7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbmxpbmVPZmZz
ZXQobV9vZmZzZXQpKSB7CisgICAgICAgIGlmIChpc0lubGluZU9mZnNldChtX29mZnNldCkpIHsK
ICAgICAgICAgICAgIGppdC5zdG9yZVZhbHVlKAogICAgICAgICAgICAgICAgIHZhbHVlUmVncywK
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDY1N2UyYmIzZTIzYmE3NWI0Njcy
MDMwYWFjMzhmNmY4NTNjMjQ5ZjUuLmExYWQzNzY2OWFmMTIwMDMwMjM1MTUwMmUzNGM5MGMyNDE4
ODRlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC0xNTAwLDYgKzE1MDAsOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICAgICAgICAg
ICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5w
dXRTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5pbnMpCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuaW5TdGF0dXMg
PSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0Nv
bW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmRlbGV0ZVN0YXR1cyA9
IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kYWQ0MmJlOTljZDAwMDJhYjU1YTQ1ZmMyODY5MjAwMmU4N2M2NmI1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJp
YW50LmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZWxldGVCeUlk
VmFyaWFudC5oIgorCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQoQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHJlc3VsdCwKKyAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSwgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCkKKyAgICA6IG1fcmVzdWx0KHJlc3VsdCkKKyAgICAsIG1fb2xkU3RydWN0dXJlKG9sZFN0cnVj
dHVyZSkKKyAgICAsIG1fbmV3U3RydWN0dXJlKG5ld1N0cnVjdHVyZSkKKyAgICAsIG1fb2Zmc2V0
KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQoreworICAg
IEFTU0VSVChvbGRTdHJ1Y3R1cmUpOworICAgIGlmIChtX29mZnNldCA9PSBpbnZhbGlkT2Zmc2V0
KQorICAgICAgICBBU1NFUlQoIW5ld1N0cnVjdHVyZSk7CisgICAgZWxzZQorICAgICAgICBBU1NF
UlQobmV3U3RydWN0dXJlKTsKK30KKworRGVsZXRlQnlJZFZhcmlhbnQ6On5EZWxldGVCeUlkVmFy
aWFudCgpIHsgfQorCitEZWxldGVCeUlkVmFyaWFudDo6RGVsZXRlQnlJZFZhcmlhbnQoY29uc3Qg
RGVsZXRlQnlJZFZhcmlhbnQmIG90aGVyKQoreworICAgICp0aGlzID0gb3RoZXI7Cit9CisKK0Rl
bGV0ZUJ5SWRWYXJpYW50JiBEZWxldGVCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IERlbGV0
ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBtX2lkZW50aWZpZXIgPSBvdGhlci5tX2lkZW50
aWZpZXI7CisgICAgbV9yZXN1bHQgPSBvdGhlci5tX3Jlc3VsdDsKKyAgICBtX29sZFN0cnVjdHVy
ZSA9IG90aGVyLm1fb2xkU3RydWN0dXJlOworICAgIG1fbmV3U3RydWN0dXJlID0gb3RoZXIubV9u
ZXdTdHJ1Y3R1cmU7CisgICAgbV9vZmZzZXQgPSBvdGhlci5tX29mZnNldDsKKyAgICByZXR1cm4g
KnRoaXM7Cit9CisKK2Jvb2wgRGVsZXRlQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0
IERlbGV0ZUJ5SWRWYXJpYW50JiBvdGhlcikKK3sKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0g
ISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICht
X3Jlc3VsdCAhPSBvdGhlci5tX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX29mZnNldCAhPSBvdGhlci5tX29m
ZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fb2xkU3RydWN0dXJlICE9
IG90aGVyLm1fb2xkU3RydWN0dXJlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVNTRVJU
KG1fbmV3U3RydWN0dXJlID09IG90aGVyLm1fbmV3U3RydWN0dXJlKTsKKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIERlbGV0ZUJ5SWRWYXJpYW50Ojp3cml0ZXNTdHJ1Y3R1cmVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gISFuZXdTdHJ1Y3R1cmUoKTsKK30KKwordm9pZCBEZWxldGVCeUlk
VmFyaWFudDo6dmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9p
ZGVudGlmaWVyLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2b2lkIERlbGV0ZUJ5SWRW
YXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9v
bGRTdHJ1Y3R1cmUpCisgICAgICAgIG1fb2xkU3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9y
KTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3U3RydWN0dXJlLT5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKK30KKwordm9pZCBEZWxldGVCeUlkVmFyaWFudDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKK30KKwor
Ym9vbCBEZWxldGVCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGlmICghdm0u
aGVhcC5pc01hcmtlZChtX29sZFN0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIXZtLmhlYXAuaXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGVs
ZXRlQnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqKSBjb25zdAoreworICAgIG91dC5wcmludCgiPCIpOworICAgIG91dC5wcmludCgiaWQ9JyIs
IG1faWRlbnRpZmllciwgIicsIHJlc3VsdD0iLCBtX3Jlc3VsdCk7CisgICAgaWYgKG1fb2xkU3Ry
dWN0dXJlKQorICAgICAgICBvdXQucHJpbnQoIiwgIiwgKm1fb2xkU3RydWN0dXJlKTsKKyAgICBp
ZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG91dC5wcmludCgiIC0+ICIsICptX25ld1N0cnVj
dHVyZSk7CisgICAgb3V0LnByaW50KCIsIG9mZnNldCA9ICIsIG9mZnNldCgpKTsKKyAgICBvdXQu
cHJpbnQoIj4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5SWRWYXJpYW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3
NzZiNjk3OWY2ZDljMjM2NWNjZTM1NDFmZTdhZmQxYzEyMjBkOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5oCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmgiCisjaW5jbHVkZSAiUHJvcGVydHlPZmZzZXQuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVT
ZXQuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBD
YWxsTGlua1N0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOworc3RydWN0IER1bXBDb250ZXh0
OworCitjbGFzcyBEZWxldGVCeUlkVmFyaWFudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgRGVsZXRlQnlJZFZhcmlhbnQoCisgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIsIGJvb2wgcmVzdWx0LAorICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdXRyZSwg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKKworICAgIH5EZWxldGVC
eUlkVmFyaWFudCgpOworCisgICAgRGVsZXRlQnlJZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZh
cmlhbnQmKTsKKyAgICBEZWxldGVCeUlkVmFyaWFudCYgb3BlcmF0b3I9KGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50Jik7CisKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb2xkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX25ld1N0cnVjdHVyZTsgfQorICAgIGJvb2wgcmVzdWx0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXN1bHQ7IH0KKyAgICBib29sIHdyaXRlc1N0cnVjdHVyZXMoKSBjb25zdDsKKwor
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisK
KyAgICBib29sIGlzUHJvcGVydHlVbnNldCgpIGNvbnN0IHsgcmV0dXJuIG9mZnNldCgpID09IGlu
dmFsaWRPZmZzZXQ7IH0KKworICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgRGVsZXRlQnlJ
ZFZhcmlhbnQmIG90aGVyKTsKKworICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3Im
KTsKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6
ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgdm9pZCBk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKKworICAgIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgYm9vbCBvdmVybGFwcyhjb25zdCBEZWxldGVCeUlkVmFyaWFudCYgb3RoZXIp
CisgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZp
ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcikg
eworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBt
X29sZFN0cnVjdHVyZSA9PSBvdGhlci5tX29sZFN0cnVjdHVyZTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOworCisgICAgYm9vbCBtX3Jlc3VsdDsK
KyAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1
Y3R1cmU7CisgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeVN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmMjI5MjU5NDZjZjZkYjdjYzJhOTI1Nzk2YTJkZDFiZjRhNWNhOWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCkBA
IC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCisK
KyNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVz
VXRpbHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTY29wZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgorCituYW1l
c3BhY2UgSlNDIHsKK25hbWVzcGFjZSBET01KSVQgeworY2xhc3MgR2V0dGVyU2V0dGVyOworfQor
Citib29sIERlbGV0ZUJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IERlbGV0ZUJ5SWRWYXJp
YW50JiB2YXJpYW50KQoreworICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJp
YW50cywgdmFyaWFudCk7Cit9CisKK0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21w
dXRlRm9yQmFzZWxpbmUoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgbWFw
LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCit7CisgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2spOworCisgICAg
RGVsZXRlQnlTdGF0dXMgcmVzdWx0OworCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgcmVzdWx0
ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgIGxv
Y2tlciwgYmFzZWxpbmVCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5z
dHViSW5mbyk7CisKKyAgICBpZiAoZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93
VmVyc2lvbigpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFS
QU0oZGlkRXhpdCk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2VuZGlmCisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgRU5BQkxFKEpJVCkKK0RlbGV0ZUJ5U3RhdHVz
OjpEZWxldGVCeVN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSwgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvKQoreworICAgIHN3aXRjaCAoc3VtbWFyeSkgeworICAgIGNhc2UgU3R1Yklu
Zm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlv
bjsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6Cisg
ICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6Ok1ha2VzQ2FsbHM6CisgICAgY2FzZSBTdHViSW5mb1N1
bW1hcnk6OlRha2VzU2xvd1BhdGhBbmRNYWtlc0NhbGxzOgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdHViSW5mb1N1bW1h
cnk6OlRha2VzU2xvd1BhdGg6CisgICAgICAgIG1fc3RhdGUgPSBzdHViSW5mby50b29rU2xvd1Bh
dGggPyBPYnNlcnZlZFRha2VzU2xvd1BhdGggOiBMaWtlbHlUYWtlc1Nsb3dQYXRoOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K0RlbGV0ZUJ5U3RhdHVzIERlbGV0ZUJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0
RXhpdFNpdGVGZWVkYmFjaygKKyAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqIGJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8pCit7CisgICAgU3R1YkluZm9T
dW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3VtbWFyeShibG9jay0+dm0oKSwg
c3R1YkluZm8pOworICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkpKQorICAgICAgICByZXR1
cm4gRGVsZXRlQnlTdGF0dXMoc3VtbWFyeSwgKnN0dWJJbmZvKTsKKworICAgIERlbGV0ZUJ5U3Rh
dHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsKKyAgICBzd2l0Y2ggKHN0
dWJJbmZvLT5jYWNoZVR5cGUoKSkgeworICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKKyAgICAg
ICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOworCisgICAgY2FzZSBDYWNo
ZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3MqIGxpc3QgPSBzdHViSW5m
by0+dS5zdHViOworCisgICAgICAgIGZvciAodW5zaWduZWQgbGlzdEluZGV4ID0gMDsgbGlzdElu
ZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2xpc3RJbmRleCkgeworICAgICAgICAgICAgY29uc3QgQWNj
ZXNzQ2FzZSYgYWNjZXNzID0gbGlzdC0+YXQobGlzdEluZGV4KTsKKyAgICAgICAgICAgIEFTU0VS
VCghYWNjZXNzLnZpYVByb3h5KCkpOworCisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGFjY2Vzcy5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwor
CisgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
QWNjZXNzQ2FzZTo6RGVsZXRlTWlzczoKKyAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6RGVs
ZXRlTm9uQ29uZmlndXJhYmxlOiB7CisgICAgICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQg
dmFyaWFudChhY2Nlc3MuaWRlbnRpZmllcigpLCBhY2Nlc3MudHlwZSgpID09IEFjY2Vzc0Nhc2U6
OkRlbGV0ZU1pc3MgPyB0cnVlIDogZmFsc2UsIHN0cnVjdHVyZSwgbnVsbHB0ciwgaW52YWxpZE9m
ZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1Zl
cnNpb24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkRlbGV0ZTogeworICAgICAg
ICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uRnJv
bUV4aXN0aW5nU3RydWN0dXJlQ29uY3VycmVudGx5KHN0cnVjdHVyZSwgYWNjZXNzLmlkZW50aWZp
ZXIoKS51aWQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNp
b24oc3VtbWFyeSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChv
ZmZzZXQsIG9mZnNldCA9PSBhY2Nlc3Mub2Zmc2V0KCkpOyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50KGFjY2Vzcy5pZGVudGlmaWVyKCks
IHRydWUsIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBhY2Nlc3Mub2Zmc2V0KCkpOworCisgICAg
ICAgICAgICAgICAgaWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUJ5U3RhdHVzKEpTQzo6c2xvd1ZlcnNpb24oc3VtbWFy
eSksICpzdHViSW5mbyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgICAgIHJldHVybiBEZWxldGVCeVN0YXR1cyhKU0M6OnNsb3dWZXJzaW9u
KHN1bW1hcnkpLCAqc3R1YkluZm8pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
RGVsZXRlQnlTdGF0dXMoSlNDOjpzbG93VmVyc2lvbihzdW1tYXJ5KSwgKnN0dWJJbmZvKTsKKyAg
ICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBEZWxl
dGVCeVN0YXR1cygpOworfQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6Y29tcHV0
ZUZvcigKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGlu
ZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCit7CisgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hl
RXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisKKyAgICBmb3IgKElDU3Rh
dHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAgICAgICBJQ1N0YXR1cyBz
dGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisKKyAgICAgICAgYXV0byBibGVzcyA9
IFsmXSAoY29uc3QgRGVsZXRlQnlTdGF0dXMmIHJlc3VsdCkgLT4gRGVsZXRlQnlTdGF0dXMgewor
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9yaWdpbikpIHsKKyAgICAg
ICAgICAgICAgICBEZWxldGVCeVN0YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVGb3JCYXNl
bGluZSgKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGJ5
dGVjb2RlSW5kZXgsIGRpZEV4aXQpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1l
cmdlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVk
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworCisgICAgICAgIGlmIChzdGF0dXMuc3R1
YkluZm8pIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5U3RhdHVzIHJlc3VsdDsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9w
dGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21w
dXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKKyAgICAgICAgICAgICAgICAg
ICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGJsZXNzKHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
c3RhdHVzLmRlbGV0ZVN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBibGVzcygqc3RhdHVzLmRl
bGV0ZVN0YXR1cyk7CisgICAgfQorCisgICAgcmV0dXJuIGNvbXB1dGVGb3JCYXNlbGluZShiYXNl
bGluZUJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCitEZWxldGVCeVN0YXR1cyBEZWxldGVCeVN0YXR1czo6c2xv
d1ZlcnNpb24oKSBjb25zdAoreworICAgIGlmIChvYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAg
IHJldHVybiBEZWxldGVCeVN0YXR1cyhPYnNlcnZlZFRha2VzU2xvd1BhdGgpOworICAgIHJldHVy
biBEZWxldGVCeVN0YXR1cyhMaWtlbHlUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBEZWxldGVC
eVN0YXR1czo6bWVyZ2UoY29uc3QgRGVsZXRlQnlTdGF0dXMmIG90aGVyKQoreworICAgIGlmIChv
dGhlci5tX3N0YXRlID09IE5vSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbWVyZ2VTbG93ID0gWyZdICgpIHsKKyAgICAgICAgaWYgKG9ic2VydmVkU2xvd1BhdGgoKSB8
fCBvdGhlci5vYnNlcnZlZFNsb3dQYXRoKCkpCisgICAgICAgICAgICAqdGhpcyA9IERlbGV0ZUJ5
U3RhdHVzKE9ic2VydmVkVGFrZXNTbG93UGF0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICp0aGlzID0gRGVsZXRlQnlTdGF0dXMoTGlrZWx5VGFrZXNTbG93UGF0aCk7CisgICAgfTsKKwor
ICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgTm9JbmZvcm1hdGlvbjoKKyAgICAgICAg
KnRoaXMgPSBvdGhlcjsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBTaW1wbGU6CisgICAg
ICAgIGlmIChtX3N0YXRlICE9IG90aGVyLm1fc3RhdGUpCisgICAgICAgICAgICByZXR1cm4gbWVy
Z2VTbG93KCk7CisKKyAgICAgICAgZm9yIChhdXRvJiBvdGhlclZhcmlhbnQgOiBvdGhlci5tX3Zh
cmlhbnRzKSB7CisgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJpYW50KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgIGNhc2UgT2JzZXJ2
ZWRUYWtlc1Nsb3dQYXRoOgorICAgICAgICByZXR1cm4gbWVyZ2VTbG93KCk7CisgICAgfQorCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBEZWxldGVCeVN0YXR1
czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAgIGlmIChtX3N0YXRlICE9
IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdmFyaWFudHMucmVtb3ZlQWxsTWF0Y2hp
bmcoCisgICAgICAgIFsmXSAoYXV0byYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICBy
ZXR1cm4gIXNldC5jb250YWlucyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgfSk7
CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZv
cm1hdGlvbjsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBEZWxldGVCeVN0YXR1czo6c2luZ2xl
SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0g
bV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtX3ZhcmlhbnRz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0gcmVz
dWx0KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgRGVsZXRlQnlTdGF0dXM6OnZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGZvciAoRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKQorICAgICAgICB2YXJpYW50LnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworfQorCit2
b2lkIERlbGV0ZUJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBmb3IgKERlbGV0ZUJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAg
ICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBEZWxldGVCeVN0YXR1
czo6ZmluYWxpemUoVk0mIHZtKQoreworICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG1fdmFyaWFu
dHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKHZtKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRGVsZXRlQnlT
dGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigi
KTsKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKyAgICBjYXNlIE5vSW5mb3JtYXRpb246CisgICAg
ICAgIG91dC5wcmludCgiTm9JbmZvcm1hdGlvbiIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNpbXBsZToKKyAgICAgICAgb3V0LnByaW50KCJTaW1wbGUiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBMaWtlbHlUYWtlc1Nsb3dQYXRoOgorICAgICAgICBvdXQucHJpbnQoIkxpa2VseVRh
a2VzU2xvd1BhdGgiKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPYnNlcnZlZFRha2VzU2xv
d1BhdGg6CisgICAgICAgIG91dC5wcmludCgiT2JzZXJ2ZWRUYWtlc1Nsb3dQYXRoIik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJpbnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50
cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTVhZDYwMmI2NTE3
MGMxNDYwMjczN2RkN2NjODU1NzY5OGY1ZjcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmgKQEAgLTAsMCArMSwxMDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgorI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb25jdXJyZW50
SlNMb2NrLmgiCisjaW5jbHVkZSAiRGVsZXRlQnlJZFZhcmlhbnQuaCIKKyNpbmNsdWRlICJFeGl0
RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisjaW5jbHVkZSAiU3R1YkluZm9TdW1t
YXJ5LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBY2Nlc3NDYXNlOworY2xhc3MgQ29k
ZUJsb2NrOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CisKK2NsYXNzIERlbGV0ZUJ5U3RhdHVz
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVt
IFN0YXRlIDogdWludDhfdCB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNoZWQgc28gd2UgaGF2ZSBu
byBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAgICAgICAgLy8gSXQncyBj
YWNoZWQgZm9yIGEgc2ltcGxlIGFjY2Vzcy4KKyAgICAgICAgU2ltcGxlLAorICAgICAgICAvLyBJ
dCB3aWxsIGxpa2VseSB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgICAgIExpa2VseVRha2VzU2xv
d1BhdGgsCisgICAgICAgIC8vIEl0IGhhcyBiZWVuIHNlZW4gdG8gdGFrZSB0aGUgc2xvdyBwYXRo
LgorICAgICAgICBPYnNlcnZlZFRha2VzU2xvd1BhdGgsCisgICAgfTsKKworICAgIERlbGV0ZUJ5
U3RhdHVzKCkKKyAgICAgICAgOiBtX3N0YXRlKE5vSW5mb3JtYXRpb24pCisgICAgeworICAgIH0K
KworICAgIGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0YXRlIHN0YXRlKQorICAgICAgICA6IG1f
c3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3Rh
Y2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbik7CisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlICE9IE5vSW5mb3JtYXRpb247IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFpc1NldCgpOyB9CisgICAgYm9vbCBvYnNlcnZlZFNsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBPYnNlcnZlZFRha2VzU2xvd1BhdGg7IH0KKyAgICBib29sIGlz
U2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBjb25zdCBW
ZWN0b3I8RGVsZXRlQnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIHsgcmV0dXJuIG1fdmFyaWFu
dHM7IH0KKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBjb25zdDsK
KworICAgIERlbGV0ZUJ5U3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CisKKyAgICAvLyBBdHRl
bXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVj
dHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgorICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFN0cnVjdHVyZVNldCYpOworCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYp
OworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXpl
KFZNJik7CisKKyAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQm
KTsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IERlbGV0ZUJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKKyAgICB2b2lkIG1lcmdlKGNvbnN0IERlbGV0ZUJ5U3RhdHVzJik7CisKKyAgICBzdGF0
aWMgRGVsZXRlQnlTdGF0dXMgY29tcHV0ZUZvckJhc2VsaW5lKENvZGVCbG9jayosIElDU3RhdHVz
TWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworI2lmIEVOQUJMRShKSVQpCisgICAgc3Rh
dGljIERlbGV0ZUJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKAorICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKworICAgIFZlY3RvcjxEZWxl
dGVCeUlkVmFyaWFudCwgMT4gbV92YXJpYW50czsKKyAgICBTdGF0ZSBtX3N0YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0
YXR1c01hcC5oCmluZGV4IGRiZDVhODgyMzEyNDIyZDRlOGIyZWRkM2I3OTgyMmM3NjdhN2JiYzgu
LmYwMzE5MDExNWEzYjhlNDJiNGViOGI4NzQwM2FmMmQ4NGUwMzc0ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zNyw2ICszNyw3IEBAIGNs
YXNzIENvZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwogY2xhc3MgSW5CeUlkU3RhdHVzOwog
Y2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0
dXJlU3R1YkluZm87CiBzdHJ1Y3QgQnlWYWxJbmZvOwogCkBAIC00OCw2ICs0OSw3IEBAIHN0cnVj
dCBJQ1N0YXR1cyB7CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIgfTsKICAg
ICBJbkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIFB1dEJ5SWRTdGF0dXMq
IHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlU3RhdHVz
IHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVz
LCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCBjOTQ4
NGI0ODVhZGZlNmRhYjRjY2YyYjdhYTY0NWJmNzg4OTgwODMyLi5kNjE1YTEzZDljM2M0NzVhNjE2
YzJlNTQ3NzI5NTU0NjE2OWM0NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC0zNCw2ICszNCw3IEBAIFJlY29yZGVk
U3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYg
b3RoZXIpCiAgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CiAgICAgcHV0cyA9IFdURk1v
dmUob3RoZXIucHV0cyk7CiAgICAgaW5zID0gV1RGTW92ZShvdGhlci5pbnMpOworICAgIGRlbGV0
ZXMgPSBXVEZNb3ZlKG90aGVyLmRlbGV0ZXMpOwogICAgIHNocmlua1RvRml0KCk7CiAgICAgcmV0
dXJuICp0aGlzOwogfQpAQCAtNzUsMTAgKzc2LDIwIEBAIEluQnlJZFN0YXR1cyogUmVjb3JkZWRT
dGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNv
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVsZXRlQnlTdGF0dXMqIFJlY29yZGVkU3RhdHVz
ZXM6OmFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0
IERlbGV0ZUJ5U3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPERlbGV0ZUJ5U3RhdHVzPihzdGF0dXMpOworICAgIERlbGV0ZUJ5U3RhdHVzKiByZXN1bHQg
PSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgZGVsZXRlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29k
ZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
dm9pZCBSZWNvcmRlZFN0YXR1c2VzOjp2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgc2xvdFZp
c2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKICAgICAgICAgcGFpci5zZWNv
bmQtPnZpc2l0QWdncmVnYXRlKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBk
ZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+dmlzaXRBZ2dyZWdhdGUoc2xvdFZpc2l0b3Ip
OwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBz
bG90VmlzaXRvcikKQEAgLTg5LDYgKzEwMCw4IEBAIHZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQogICAgICAgICBwYWlyLnNlY29uZC0+
bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGlucykKICAg
ICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1
dG8mIHBhaXIgOiBkZWxldGVzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xv
dFZpc2l0b3IpOwogfQogCiB2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERl
bGV0aW5nKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5oCmluZGV4IGIzNTVlOWI2MjMzODQ2MjkyNjQ4MmM3YzFiOTFmNDIxZmZl
NjIwZDAuLjllNzA1NWQyNDNmMjRhYTZhZjVhYTA5MmFkMzAyZWYxNWE4ZDA1NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5o
IgorI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIK
ICNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCkBA
IC00Nyw2ICs0OCw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBHZXRCeVN0YXR1
cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEdldEJ5U3RhdHVzJik7
CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwg
Y29uc3QgUHV0QnlJZFN0YXR1cyYpOwogICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVz
KGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICBEZWxldGVCeVN0
YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IERlbGV0ZUJ5
U3RhdHVzJik7CiAgICAgCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOwog
ICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKQEAgLTYzLDEyICs2NSwxNCBAQCBz
dHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgICAgIGZ1bmMoZ2V0cyk7CiAgICAgICAgIGZ1
bmMocHV0cyk7CiAgICAgICAgIGZ1bmMoaW5zKTsKKyAgICAgICAgZnVuYyhkZWxldGVzKTsKICAg
ICB9CiAgICAgCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0czsKICAgICBWZWN0b3I8c3Rk
OjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3RhdHVzPj4+IHB1dHM7
CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8SW5CeUlk
U3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5p
cXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBkZWxldGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOTUzZmJhZWY0OGYzYTU1NGQ0NTliZDlhMmIzZDZl
NjNkYWE3Y2FjNy4uNzcxZDkyZTgyMzllNDNhYjI1ZmRiNjZmY2YxMDU5OWVhYWNhMzk0NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtMzcxMCw2ICszNzEwLDQxIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFRyYW5zaXRpb25WZWN0b3Ig
dHJhbnNpdGlvbnM7CisKKyAgICAgICAgLy8gT3JkaW5hcmlseSB5b3UgaGF2ZSB0byBiZSBjYXJl
ZnVsIHdpdGggY2FsbGluZyBzZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcoKQorICAgICAgICAv
LyBiZWNhdXNlIG9mIHRoZSBlZmZlY3Qgb24gY29tcGlsZSB0aW1lcywgYnV0IHRoaXMgbm9kZSBp
cyBGVEwtb25seS4KKyAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmco
dHJ1ZSk7CisKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CisKKyAgICAgICAgaWYgKG5vZGUtPm11bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkud3Jp
dGVzU3RydWN0dXJlcygpKQorICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJTdHJ1Y3R1cmVzKCk7
CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERh
dGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IERlbGV0ZUJ5
SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9ICpt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAg
ICAgIHRoaXNTZXQuZmlsdGVyKGJhc2UpOworICAgICAgICAgICAgaWYgKHRoaXNTZXQuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAodmFyaWFu
dC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
bmV3U3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpKTsKKyAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCisgICAgICAgICAg
ICAgICAgICAgIFRyYW5zaXRpb24obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9s
ZFN0cnVjdHVyZSgpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFk
ZChuZXdTdHJ1Y3R1cmUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbmV3
U2V0Lm1lcmdlKHRoaXNTZXQpOworICAgICAgICB9CisKKyAgICAgICAgb2JzZXJ2ZVRyYW5zaXRp
b25zKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbnMpOworICAgICAgICBpZiAoZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5ld1NldCkgPT0gQ29udHJhZGlj
dGlvbikKKyAgICAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRFeGVjdXRhYmxlOiB7CiAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwpAQCAtNDEw
OCw2ICs0MTQzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEZpbHRlckdl
dEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2Ug
Q2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgYnJlYWs7CiAKQEAgLTQyODksNiArNDMyNSwxMyBA
QCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0
YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0
ZSgpKQorICAgICAgICAgICAgbm9kZS0+ZGVsZXRlQnlTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1f
c3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1l
bnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDUzYjAxNDgzZWQ0MTQ5MDg0ODc1MWRk
YjMzNjlkMjE2YmNiNWQ1YzguLmJlNjcxMjFjZTMxMzg1ZGZkOTVlN2RiNDE4OWJkOGNjZjc4OTg4
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxp
bWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBjYXNlIENoZWNr
QXJyYXlPckVtcHR5OgpAQCAtMTI2Niw3ICsxMjY3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOiB7CisgICAgICAgICAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czogewogICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRWxpbWluYXRl
ZEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUobV9ncmFwaCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IDk5NjFkOTAzMmQ2ODBkODUzNDY1OThkZTZhMmI4ZmFjZDczNDI3YmQuLjlkZDRiOWFhNDhjODBj
MDZkZjA0YzBlMWYzYWYzMzA1ZWVkYWQxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAi
REZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUg
IkRGR0pJVENvZGUuaCIKKyNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKQEAgLTI0OSw2ICsyNTAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFu
ZGxlUHV0QnlJZCgKICAgICAgICAgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LAogICAgICAgICBib29sIGlzRGlyZWN0LCB1bnNpZ25lZCBpbnRydWN0aW9uU2l6ZSk7CisKKyAg
ICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5h
dGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgRGVsZXRlQnlTdGF0dXMpOwogICAgIAogICAgIC8vIEVpdGhlciByZWdpc3RlciBh
IHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZvciB0aGlzIGNvbmRpdGlvbi4gUmV0dXJucyBm
YWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24gbm8gbG9uZ2VyIGhvbGRzLCBhbmQgdGhlcmVm
b3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJlIGVtaXR0ZWQuCkBAIC00NjE0LDYgKzQ2MTgs
MTA0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGdldHRl
ciwgbnVtYmVyT2ZQYXJhbWV0ZXJzIC0gMSwgcmVnaXN0ZXJPZmZzZXQsICp2YXJpYW50LmNhbGxM
aW5rU3RhdHVzKCksIHByZWRpY3Rpb24pOwogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVEZWxldGVCeUlkKAorICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLAorICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIsIERlbGV0ZUJ5U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzKQoreworICAgIGlmICghZGVs
ZXRlQnlTdGF0dXMuaXNTaW1wbGUoKSB8fCAhZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKS5zaXpl
KCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgc2V0KGRlc3Rp
bmF0aW9uLAorICAgICAgICAgICAgYWRkVG9HcmFwaChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRp
ZmllciksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkZWxldGVC
eVN0YXR1cy52YXJpYW50cygpLnNpemUoKSA+IDEpIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1f
cGxhbi5pc0ZUTCgpCisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpLnNp
emUoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7
CisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sCisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChEZWxldGVCeUlkLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyRGVsZXRlQnlTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkRGVsZXRlQnlT
dGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZGVsZXRlQnlTdGF0dXMpKSwgYmFzZSk7CisKKyAg
ICAgICAgYm9vbCBoYXNIaXQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNNaXNzID0gZmFsc2U7
CisgICAgICAgIGJvb2wgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSA9IGZhbHNlOworCisgICAgICAg
IGZvciAoY29uc3QgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1cy52
YXJpYW50cygpKSB7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlh
bnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQu
bmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIGhhc0hpdCA9IHRydWU7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHZhcmlhbnQucmVzdWx0KCkpCisgICAgICAgICAgICAgICAgaGFzTWlz
cyA9IHRydWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaGFzTWlzc05vbmNv
bmZpZ3VyYWJsZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWhhc0hpdCkgewor
ICAgICAgICAgICAgaWYgKChoYXNNaXNzICYmICFoYXNNaXNzTm9uY29uZmlndXJhYmxlKSB8fCAo
IWhhc01pc3MgJiYgaGFzTWlzc05vbmNvbmZpZ3VyYWJsZSkpIHsKKyAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmVTZXQgYmFzZVNldDsKKworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRGVsZXRl
QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpKQorICAgICAg
ICAgICAgICAgICAgICBiYXNlU2V0LmFkZCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKworICAg
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldChiYXNlU2V0KSksIGJhc2UpOworICAgICAgICAgICAgICAgIHNldChkZXN0
aW5hdGlvbiwganNDb25zdGFudChqc0Jvb2xlYW4oZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVsw
XS5yZXN1bHQoKSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3Jh
cGgubV9tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YS5hZGQoKTsKKyAgICAgICAgZGF0YS0+dmFyaWFu
dHMgPSBkZWxldGVCeVN0YXR1cy52YXJpYW50cygpOworICAgICAgICBkYXRhLT5pZGVudGlmaWVy
TnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9uLAorICAg
ICAgICAgICAgYWRkVG9HcmFwaChNdWx0aURlbGV0ZUJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIGJh
c2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChkZWxldGVCeVN0YXR1
cy52YXJpYW50cygpLnNpemUoKSA9PSAxKTsKKyAgICBEZWxldGVCeUlkVmFyaWFudCB2YXJpYW50
ID0gZGVsZXRlQnlTdGF0dXMudmFyaWFudHMoKVswXTsKKworICAgIGlmICghdmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckRlbGV0ZUJ5U3RhdHVzLCBP
cEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFkZERlbGV0ZUJ5U3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIGRlbGV0ZUJ5U3RhdHVzKSksIGJhc2UpOworICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICAgICAgc2V0KGRlc3RpbmF0aW9u
LCBqc0NvbnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJEZWxldGVCeVN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGREZWxldGVCeVN0YXR1cyhjdXJy
ZW50Q29kZU9yaWdpbigpLCBkZWxldGVCeVN0YXR1cykpLCBiYXNlKTsKKyAgICBhZGRUb0dyYXBo
KENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKKyAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CisgICAgQVNT
RVJUKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgIEFTU0VSVChpc1ZhbGlkT2Zmc2V0KHZh
cmlhbnQub2Zmc2V0KCkpKTsKKworICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKKyAgICBUcmFu
c2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKKyAgICAgICAg
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisKKyAgICBpZiAo
aXNJbmxpbmVPZmZzZXQodmFyaWFudC5vZmZzZXQoKSkpCisgICAgICAgIHByb3BlcnR5U3RvcmFn
ZSA9IGJhc2U7CisgICAgZWxzZQorICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBhZGRUb0dyYXBo
KEdldEJ1dHRlcmZseSwgYmFzZSk7CisKKyAgICBTdG9yYWdlQWNjZXNzRGF0YSogZGF0YSA9IG1f
Z3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hZGQoKTsKKyAgICBkYXRhLT5vZmZzZXQgPSB2YXJp
YW50Lm9mZnNldCgpOworICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVt
YmVyOworCisgICAgYWRkVG9HcmFwaCgKKyAgICAgICAgUHV0QnlPZmZzZXQsCisgICAgICAgIE9w
SW5mbyhkYXRhKSwKKyAgICAgICAgcHJvcGVydHlTdG9yYWdlLAorICAgICAgICBiYXNlLAorICAg
ICAgICBqc0NvbnN0YW50KEpTVmFsdWUoKSkpOworCisgICAgYWRkVG9HcmFwaChQdXRTdHJ1Y3R1
cmUsIE9wSW5mbyh0cmFuc2l0aW9uKSwgYmFzZSk7CisgICAgc2V0KGRlc3RpbmF0aW9uLCBqc0Nv
bnN0YW50KGpzQm9vbGVhbih2YXJpYW50LnJlc3VsdCgpKSkpOworICAgIHJldHVybjsKK30KKwog
dm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQoCiAgICAgTm9kZSogYmFzZSwgQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0QnlJZFN0YXR1
cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCkKIHsKQEAgLTU5NDcsMTYgKzYwNDksNDkg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlJZD4o
KTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lk
ZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKKyAgICAgICAgICAgIERlbGV0ZUJ5
U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CiAgICAgICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdOwotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5
SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVk
QnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgYmFz
ZSkpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jaywgdWlkKTsKKyAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQoYnl0ZWNv
ZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0ZUJ5U3Rh
dHVzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2RlbF9ieV9pZCk7CiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wRGVsQnlWYWw+KCk7CiAgICAgICAgICAgICBO
b2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7Ci0gICAgICAgICAgICBOb2RlKiBrZXkg
PSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9k
c3QsIGFkZFRvR3JhcGgoRGVsZXRlQnlWYWwsIGJhc2UsIGtleSkpOworICAgICAgICAgICAgTm9k
ZSogcHJvcGVydHkgPSBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgICAgICAgICBib29s
IHNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQgPSBmYWxzZTsKKyAgICAgICAgICAgIERlbGV0ZUJ5
U3RhdHVzIGRlbGV0ZUJ5U3RhdHVzID0gRGVsZXRlQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CisgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIGlm
ICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAg
ICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoQ2FjaGVh
YmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gZGVsZXRlQnlTdGF0dXMuc2luZ2xlSWRlbnRpZmll
cigpKSB7CisgICAgICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBpZGVu
dGlmaWVyLnVpZCgpOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyID0gbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZShpZGVudGlmaWVyLnVpZCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIuaXNDZWxsKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhp
ZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmll
ci5pc1N5bWJvbENlbGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KENoZWNrQ2VsbCwgT3BJbmZvKGZyb3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNr
SWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8o
dWlkKSwgcHJvcGVydHkpOworCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUJ5SWQo
Ynl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIGRlbGV0
ZUJ5U3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ29tcGlsZUFzRGVsZXRlQnlJ
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIXNob3VsZENvbXBpbGVBc0RlbGV0ZUJ5SWQpCisgICAgICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKERlbGV0ZUJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZGVsX2J5X3ZhbCk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBkMTk1MjJmZWQ1ZThl
NWZhZmM1ZDk1M2VjODMyMGVlN2Q2N2Y1MjNjLi42MmJiMTI1OGQ1MGI5MzM5MDJhZDIyZGM2ZTQ5
ODZjNmI1NjExMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aApAQCAtNDY3LDYgKzQ2Nyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBG
aWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAg
ICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTEy
NzgsNiArMTI3OSwxNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVh
cExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5v
ZGUobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAg
ICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6IHsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0
dXJlSUQpOworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7CisgICAgICAgIEFic3Ry
YWN0SGVhcCBoZWFwKE5hbWVkUHJvcGVydGllcywgbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERh
dGEoKS5pZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgd3JpdGUoaGVhcCk7CisgICAgICAgIGlm
IChub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0cnVjdHVyZXMoKSkKKyAg
ICAgICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIGRlZihIZWFwTG9j
YXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShn
cmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgICAgICAKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBub2RlLT5zdG9yYWdlQWNjZXNzRGF0YSgpLmlkZW50aWZpZXJOdW1iZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUu
Y3BwCmluZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhkMmJmMDZkZWIuLmYxNzQ1
ZWNhYTAxNWE5NmRlYmYwZGMxYTliYWE5MjgxMjFkMzk2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04Niw2ICs4Niw3
IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgog
ICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0
dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0
IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAv
LyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJl
bid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmlu
ZGV4IDY1MDUzY2ViNWUwODdhMGNkNGEzMTQ4MGFmZGU4ZDY1MTgxZWQxNDMuLjkxMWRkOWIxZTc3
YWNiNTU4YTg2MzBlZjJjMTgxMDA2MGYxZWRjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC01MDksNiArNTA5
LDM2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgTXVsdGlE
ZWxldGVCeU9mZnNldDogeworICAgICAgICAgICAgICAgIEVkZ2UgYmFzZUVkZ2UgPSBub2RlLT5j
aGlsZDEoKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gYmFzZUVkZ2Uubm9kZSgpOwor
ICAgICAgICAgICAgICAgIE11bHRpRGVsZXRlQnlPZmZzZXREYXRhJiBkYXRhID0gbm9kZS0+bXVs
dGlEZWxldGVCeU9mZnNldERhdGEoKTsKKworICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUg
YmFzZVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGJhc2UpOworCisgICAgICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBu
b2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgorICAgICAgICAgICAgICAgIGFscmVh
ZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9s
ZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgorCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgRGVsZXRlQnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOworCisg
ICAgICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0gPSBkYXRhLnZhcmlhbnRzLmxhc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGEudmFyaWFudHMucmVtb3ZlTGFzdCgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmIChkYXRhLnZhcmlhbnRzLnNpemUoKSAhPSAxKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVtaXREZWxldGVCeU9mZnNldCgKKyAg
ICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIGRhdGEudmFy
aWFudHNbMF0sIGRhdGEuaWRlbnRpZmllck51bWJlcik7CisgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7CiAgICAgICAgICAg
ICAgICAgRWRnZSBiYXNlRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwpAQCAtMTMxMiw2ICsxMzQyLDQ1
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2hpbGRFZGdlKTsKICAgICAgICAgfQogICAg
IH0KKworICAgIHZvaWQgZW1pdERlbGV0ZUJ5T2Zmc2V0KHVuc2lnbmVkIGluZGV4SW5CbG9jaywg
Tm9kZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBEZWxldGVC
eUlkVmFyaWFudCYgdmFyaWFudCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKKyAgICB7Cisg
ICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG5vZGUsIG9yaWdpbi5leGl0T0spOworICAgICAgICBhZGRCYXNlQ2hlY2so
aW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpOworICAgICAgICBub2RlLT5jaGlsZDEoKS5zZXRVc2VL
aW5kKEtub3duQ2VsbFVzZSk7CisKKyAgICAgICAgaWYgKCF2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
KSB7CisgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIGpzQm9vbGVh
bih2YXJpYW50LnJlc3VsdCgpKSk7CisgICAgICAgICAgICBub2RlLT5vcmlnaW4gPSBub2RlLT5v
cmlnaW4ud2l0aEludmFsaWRFeGl0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25z
LmFkZCgKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSkpOworCisgICAgICAgIEVkZ2UgcHJvcGVydHlTdG9yYWdlOworCisgICAgICAgIGlmIChp
c0lubGluZU9mZnNldCh2YXJpYW50Lm9mZnNldCgpKSkKKyAgICAgICAgICAgIHByb3BlcnR5U3Rv
cmFnZSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcm9wZXJ0
eVN0b3JhZ2UgPSBFZGdlKG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAg
ICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgR2V0QnV0dGVyZmx5LCBvcmlnaW4sIG5vZGUtPmNo
aWxkMSgpKSk7CisKKyAgICAgICAgU3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEgPSAqbV9ncmFwaC5t
X3N0b3JhZ2VBY2Nlc3NEYXRhLmFkZCgpOworICAgICAgICBkYXRhLm9mZnNldCA9IHZhcmlhbnQu
b2Zmc2V0KCk7CisgICAgICAgIGRhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1i
ZXI7CisKKyAgICAgICAgTm9kZSogY2xlYXJWYWx1ZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgSlNDb25zdGFudCwgb3JpZ2luLCBPcEluZm8obV9n
cmFwaC5mcmVlemVTdHJvbmcoSlNWYWx1ZSgpKSkpOworICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUHV0QnlPZmZz
ZXQsIG9yaWdpbiwgT3BJbmZvKCZkYXRhKSwgcHJvcGVydHlTdG9yYWdlLCBub2RlLT5jaGlsZDEo
KSwgRWRnZShjbGVhclZhbHVlKSk7CisgICAgICAgIG9yaWdpbiA9IG9yaWdpbi53aXRoSW52YWxp
ZEV4aXQoKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAg
IGluZGV4SW5CbG9jaywgU3BlY05vbmUsIFB1dFN0cnVjdHVyZSwgb3JpZ2luLCBPcEluZm8odHJh
bnNpdGlvbiksCisgICAgICAgICAgICBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobm9kZSwganNCb29sZWFuKHZhcmlhbnQucmVzdWx0KCkpKTsKKyAg
ICAgICAgbm9kZS0+b3JpZ2luID0gb3JpZ2luOworICAgIH0KICAgICAKICAgICB2b2lkIGFkZEJh
c2VDaGVjaygKICAgICAgICAgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBOb2RlKiBub2RlLCBjb25z
dCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZkNWRjZjhmYTJl
ZmJhMzdmOTZkYzkwOTlkNDk3MjUxODEuLjkyYzAzOGYwNTkwMmVlOGMzMTBjNWExMTNkNjQ5NWQw
NTA1MTBjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE4
Niw2ICsxODYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDaGVja1ZhcmFyZ3M6CiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6CiAgICAgY2Fz
ZSBNdWx0aUdldEJ5T2Zmc2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBj
YXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CkBA
IC0yNDUsNiArMjQ2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgY2FzZSBEYXRlR2V0SW50MzJPck5hTjoKICAgICBjYXNlIERhdGVHZXRUaW1l
OgogICAgIGNhc2UgRGF0YVZpZXdHZXRJbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAppbmRleCA3OWE5YzRmYWI1MGU2YzY2NTVhNDZkNGM5YTFmOThiZWYz
Yzc4ZjM3Li4yYzM3NjgwM2M0Y2E2ZGY0ZjJmZDJiZTA1YzE0ZTA2NDNkNDgzNTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE4MDgsNiArMTgw
OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTXVs
dGlEZWxldGVCeU9mZnNldDogIHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogSW50
cm9kdWNlIGEgdmFyaWFudCBvZiBNYXRjaFN0cnVjdHVyZSB0aGF0IGRvZXNuJ3QgZG8gYSBjZWxs
IGNoZWNrLgpAQCAtMjU3OSw2ICsyNTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0
ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAg
ICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgY2FzZSBDcmVh
dGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggNjVmZTZhNjgxNTI4MTliMTEyMjk1NmQ5NTA2MDI5
ZmI3YTg0ZDA3OC4uYmI2ZDhmNTI4YjE2Y2I1OGE5NTI5ZjUwYjU4ZmFhMDEwZjQ2ZTM0MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTMwNCw2ICszMDQsMTIgQEAg
dm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXhTdHIs
IE5vZGUqIG5vZGUsIER1bXBDb250ZXgKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRhdGEudmFyaWFudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
IGluQ29udGV4dChkYXRhLnZhcmlhbnRzW2ldLCBjb250ZXh0KSk7CiAgICAgfQorICAgIGlmIChu
b2RlLT5oYXNNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpKSB7CisgICAgICAgIE11bHRpRGVsZXRl
QnlPZmZzZXREYXRhJiBkYXRhID0gbm9kZS0+bXVsdGlEZWxldGVCeU9mZnNldERhdGEoKTsKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWQiLCBkYXRhLmlkZW50aWZpZXJOdW1iZXIsICJ7Iiwg
aWRlbnRpZmllcnMoKVtkYXRhLmlkZW50aWZpZXJOdW1iZXJdLCAifSIpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KGRhdGEudmFyaWFudHNbaV0sIGNvbnRleHQp
KTsKKyAgICB9CiAgICAgaWYgKG5vZGUtPmhhc01hdGNoU3RydWN0dXJlRGF0YSgpKSB7CiAgICAg
ICAgIGZvciAoTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50JiB2YXJpYW50IDogbm9kZS0+bWF0Y2hTdHJ1
Y3R1cmVEYXRhKCkudmFyaWFudHMpCiAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29u
dGV4dCgqdmFyaWFudC5zdHJ1Y3R1cmUuZ2V0KCksIGNvbnRleHQpLCAiPT4iLCB2YXJpYW50LnJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggOTQ3ZWZhYWJhOWU2
NDk2YjNiMDVjNmY1NTE0MmFiN2M3N2I1YjVhMi4uMmMyNTE5NmZiMDVjNDk3Nzk0YjVkZGZjNjYx
ZGM3N2ZmMWEwZTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMTEw
MCw2ICsxMTAwLDcgQEAgcHVibGljOgogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7
CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwog
ICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKKyAg
ICBCYWc8TXVsdGlEZWxldGVCeU9mZnNldERhdGE+IG1fbXVsdGlEZWxldGVCeU9mZnNldERhdGE7
CiAgICAgQmFnPE1hdGNoU3RydWN0dXJlRGF0YT4gbV9tYXRjaFN0cnVjdHVyZURhdGE7CiAgICAg
QmFnPE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE+IG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YTsKICAgICBCYWc8Q2FsbFZhcmFyZ3NEYXRhPiBtX2NhbGxWYXJhcmdzRGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxNTUzYjE5YWY1
MTM0NDJjMDNlYmVlYzA0ODBmMmIuLjFjY2E4YjJhYzQxY2JlN2Y0OTZkM2M5NmE3YjhkZDEwMDAy
ZDU4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTA5
LDYgKzEwOSw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
U3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKaW5kZXggZGNiMmI1OWRj
YWNiYjIxOTNhODJhMGI5NzMzMzk5ZjA1NzQyYTQzOC4uZjczYWY2MDAxMWMxNTAxZDA4MGIxZWUw
NmJjN2IwYWE2NWMzNmQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCkBA
IC01Nyw2ICs1NywxNSBAQCBib29sIE11bHRpUHV0QnlPZmZzZXREYXRhOjpyZWFsbG9jYXRlc1N0
b3JhZ2UoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBNdWx0aURlbGV0ZUJ5
T2Zmc2V0RGF0YTo6d3JpdGVzU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gdmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmICh2YXJpYW50c1tpXS53
cml0ZXNTdHJ1Y3R1cmVzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEJyYW5jaFRhcmdldDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogewogICAgIGlmICghYmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGJjN2NmYjEyZDBhOGUyZDMyZTI3Mjk3Zjc0OGE2NTVlMzUxNzI2NzYuLmFhYzNh
NjM3YTA5NDE2NjQ1NDRjOTE5YmI3NDZlMGFkNTdiOWY0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5o
IgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaCIKKyNpbmNsdWRlICJEZWxldGVCeUlkVmFyaWFudC5oIgogI2luY2x1ZGUgIkdldEJ5SWRW
YXJpYW50LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgi
CkBAIC05Miw2ICs5MywxMyBAQCBzdHJ1Y3QgTXVsdGlQdXRCeU9mZnNldERhdGEgewogICAgIGJv
b2wgcmVhbGxvY2F0ZXNTdG9yYWdlKCkgY29uc3Q7CiB9OwogCitzdHJ1Y3QgTXVsdGlEZWxldGVC
eU9mZnNldERhdGEgeworICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXI7CisgICAgVmVjdG9y
PERlbGV0ZUJ5SWRWYXJpYW50LCAyPiB2YXJpYW50czsKKworICAgIGJvb2wgd3JpdGVzU3RydWN0
dXJlcygpIGNvbnN0OworfTsKKwogc3RydWN0IE1hdGNoU3RydWN0dXJlVmFyaWFudCB7CiAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmU7CiAgICAgYm9vbCByZXN1bHQ7CkBAIC0yMDI5
LDYgKzIwMzcsMTcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaGFzTXVsdGlQdXRCeU9mZnNl
dERhdGEoKSk7CiAgICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8TXVsdGlQdXRCeU9mZnNldERh
dGEqPigpOwogICAgIH0KKworICAgIGJvb2wgaGFzTXVsdGlEZWxldGVCeU9mZnNldERhdGEoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gTXVsdGlEZWxldGVCeU9mZnNldDsKKyAgICB9
CisKKyAgICBNdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSYgbXVsdGlEZWxldGVCeU9mZnNldERhdGEo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc011bHRpRGVsZXRlQnlPZmZzZXREYXRhKCkpOwor
ICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPE11bHRpRGVsZXRlQnlPZmZzZXREYXRhKj4oKTsK
KyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNNYXRjaFN0cnVjdHVyZURhdGEoKQogICAgIHsKQEAg
LTI5OTEsNiArMzAxMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQ
dXRCeUlkU3RhdHVzKj4oKTsKICAgICB9CiAKKyAgICBib29sIGhhc0RlbGV0ZUJ5U3RhdHVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOworICAg
IH0KKworICAgIERlbGV0ZUJ5U3RhdHVzKiBkZWxldGVCeVN0YXR1cygpCisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzRGVsZXRlQnlTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5h
czxEZWxldGVCeVN0YXR1cyo+KCk7CisgICAgfQorCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJp
bnRTdHJlYW0mIG91dCkKICAgICB7CiAgICAgICAgIGlmICghY2hpbGQxKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggM2ZlZjZiMzgxODUzZGQ1ZTcyYzk4YTRm
MjhiOTBiYWZmNmM2YmU0YS4uNzgzNTI4ZWE1NDU2YmZlZDNhMmExYTg1NTg5Y2UyZDhhMjM5YzYz
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjUyLDYgKzI1
Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhNdWx0aUdl
dEJ5T2Zmc2V0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNdWx0aVB1dEJ5T2Zm
c2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oTXVsdGlEZWxldGVCeU9mZnNldCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEFycmF5TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhHZXRWZWN0b3JMZW5ndGgsIE5vZGVS
ZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVz
dWx0SW50MzIpIFwKQEAgLTUyNyw2ICs1MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oRmlsdGVyR2V0QnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
RmlsdGVyRGVsZXRlQnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICAvKiBEYXRhIHZp
ZXcgYWNjZXNzICovIFwKICAgICBtYWNybyhEYXRhVmlld0dldEludCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVSZXN1bHRKUykgLyogVGhlIGdldHMgYXJlIG11c3QgZ2VuZXJhdGUgZm9yIG5vdyBi
ZWNhdXNlIHRoZXkgZG8gYm91bmRzIGNoZWNrcyAqLyBcCiAgICAgbWFjcm8oRGF0YVZpZXdHZXRG
bG9hdCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVSZXN1bHREb3VibGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCmluZGV4IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlhNzNiMzQ5ZWU3NzliNWI5
ODQuLmQwMGVhNjFlYTI5NWQxNjcwM2Y1NjY1NjhmYWU5OTcxNjUxYTExOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcApAQCAtMTIyMCw2ICsxMjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6CkBA
IC0yNTcwLDYgKzI1NzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgog
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+cmVtb3ZlV2l0aG91dENoZWNrcygpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQz
NzAxMjgzNDcyYTUwYS4uOGYxOTI2MDgwNTY2OTQ3YmFiYTAyZjE3NzZiNTQwOTRiMTBlMGJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTk4NCw2ICs5ODQsNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJ
ZDoKKyAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgogICAgICAgICBjYXNlIExvZ2lj
YWxOb3Q6CiAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6CiAgICAgICAgIGNhc2UgQ29tcGFyZUxl
c3NFcToKQEAgLTEzOTUsNiArMTM5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAg
Y2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0
dXM6CiAgICAgICAgIGNhc2UgQ2xlYXJDYXRjaExvY2FsczoKICAgICAgICAgY2FzZSBEYXRhVmll
d1NldDoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRl
NjAxYTBjN2ZjOTY2NGI1NWVhYy4uZDZlN2M5ZTMwODU3MjI0YzgyNTg1NjgyY2FiNmQwN2FlN2Qx
ZTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
QEAgLTM2MSw2ICszNjEsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgRmls
dGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhh
biB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCiAgICAgICAgIC8vIHRvIGNh
cHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1
c2VyIHB1dCB0aGVtLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MDgsNiArNjA5LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEludmFsaWRhdGlvblBvaW50OgogICAg
IGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2Ug
TXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6CiAgICAg
Y2FzZSBIYXNHZW5lcmljUHJvcGVydHk6CiAgICAgY2FzZSBIYXNTdHJ1Y3R1cmVQcm9wZXJ0eToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCmluZGV4IDEyOTBkMTc5NzAzZTg2NzAyNmYzMDJiYzgwZTcyYTAyNWY2OGJkMjQuLjhk
YWIzZDA0YmMwMmViYWY2MDg4MzVhNDFiMzE5MjI5MTU4MWI3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDE5
MCw2ICs0MTkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlT
dGF0dXM6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQyMDgsNiArNDIwOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFyaXRo
SU11bDoKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zm
c2V0OgorICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIENoZWNrQmFkQ2Vs
bDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IGM1N2E1NGY1YWRkZDQ1NGJjNDQ2OTJlNWI0ZTU4N2JmMDRhOWYxZDkuLmI4N2Y2ODcyMjc1
ODAzYjk1NWI4ZGEwZGI2Yjc3OWM5NDVkNmY2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTI1NSw2ICs1MjU1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgIGNhc2UgRmls
dGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAg
IG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTUyNjksNiArNTI3MCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEFyaXRoSU11bDoKICAgICBjYXNl
IE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgorICAgIGNhc2Ug
TXVsdGlEZWxldGVCeU9mZnNldDoKICAgICBjYXNlIEZpYXRJbnQ1MjoKICAgICBjYXNlIENoZWNr
QmFkQ2VsbDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggN2M3YWJl
ODNlMjNhNWQ4OGEzMjA4M2E1MGVkZjM0ZDM2Y2Q2MzY5Yi4uOTJkMGM4ZjFjNDU2MzczOTBjMDYz
NGE4MTU4MjQyODVlOTdhM2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC0yODcsNiArMjg3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgICAgICAgICAg
Y2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlQdXRCeU9m
ZnNldDoKKyAgICAgICAgICAgICAgICBjYXNlIE11bHRpRGVsZXRlQnlPZmZzZXQ6CiAgICAgICAg
ICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IHRoZXNlIHVzZXMuCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKQEAgLTM2Miw2ICszNjMsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgICAgICAgICBjYXNl
IE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgorICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlEZWxldGVCeU9mZnNldDoKICAgICAgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgY291bnQgdGhlc2UgdXNlcy4KICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAppbmRleCAzYTc3NzExNDVjNzYwYjM0ODJlN2UxYWM5YjY0OTkwMWRmZjE5
ZDVhLi4wZDY1ZDhmODlhZWMzZDU5NDJkMmNmODNkNmNlZDhhMWJmZjM5OGNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcApAQCAtMzExLDYgKzMxMSwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICF2YXJpYW50
Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgorICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUo
KTsgaS0tOykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVsZXRlQnlJZFZhcmlh
bnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ld
OworICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhdmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKSB8fCAhdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+ZGZnU2hvdWxkV2F0Y2goKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgICAgICAg
ICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNl
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9ubHkgc3VwcG9ydHMgc3Ry
dWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJyYXkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcApp
bmRleCA3NGVhNjE4ZTkwMTEyOWE1N2UyYzgzYmI4OTJhNzViN2I4MDYzM2I3Li4wYzM1YTUzNjVj
YzQ2ZWYzYzc4OTk0OGY0ZDJlNjBjY2YwMTc2Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OCw2
ICsxOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgICAgIGNh
c2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBHZXRCeU9m
ZnNldDogewpAQCAtMzk5LDYgKzQwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS5ub2RlKCkgPT0gY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUo
bV9ncmFwaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNWM2OWQxZDM4YzFjNjEwNTk5ZmQzMDI5
OTczNDM2MGNiMjI3YWNiMi4uZTFmNTg5ZjI3MzQzYmZmOTM2MjE2MTg4ZGFlM2I1Yzg2MzY4Njhi
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMjMzLDYgKzIzMyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAg
ICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CisgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0Ogog
ICAgIGNhc2UgVG9QcmltaXRpdmU6CiAgICAgY2FzZSBUb1Byb3BlcnR5S2V5OgogICAgIGNhc2Ug
VGhyb3c6CkBAIC0zOTIsNiArMzkzLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBD
cmVhdGVQcm9taXNlOgogICAgIGNhc2UgQ3JlYXRlR2VuZXJhdG9yOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDUxZTJiZGJiYTUxODE3NjQ3
NTQyMGJhNzYwYzVjZTNiMDc4OWI3YTAuLjM1ZDhjZTY2OTEzNzg3NmRiZDE5ZDIyZDAyNmMyOTYy
NDllZjhkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTExNzcsNiArMTE3Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTXVsdGlQ
dXRCeU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVNdWx0aVB1dEJ5T2Zmc2V0KCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNdWx0aURlbGV0ZUJ5T2Zmc2V0OgorICAgICAg
ICAgICAgY29tcGlsZU11bHRpRGVsZXRlQnlPZmZzZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgogICAgICAgICAgICAgY29tcGlsZU1hdGNoU3Ry
dWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NjksNiArMTU3Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBjb21waWxlRmlsdGVySUNT
dGF0dXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERhdGVHZXRJbnQzMk9y
TmFOOgpAQCAtODEzMCw2ICs4MTM0LDEwNiBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgfQorCisgICAgdm9p
ZCBjb21waWxlTXVsdGlEZWxldGVCeU9mZnNldCgpCisgICAgeworICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIE11bHRpRGVsZXRlQnlPZmZz
ZXREYXRhJiBkYXRhID0gbV9ub2RlLT5tdWx0aURlbGV0ZUJ5T2Zmc2V0RGF0YSgpOworCisgICAg
ICAgIHVuc2lnbmVkIG1pc3NDb25maWd1cmFibGUgPSAwOworICAgICAgICB1bnNpZ25lZCBtaXNz
Tm9uY29uZmlndXJhYmxlID0gMDsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZh
cmlhbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFy
aWFudCA9IGRhdGEudmFyaWFudHNbaV07CisgICAgICAgICAgICBpZiAoIXZhcmlhbnQubmV3U3Ry
dWN0dXJlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5yZXN1bHQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgKyttaXNzQ29uZmlndXJhYmxlOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgKyttaXNzTm9uY29uZmlndXJhYmxlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgdW5pcXVlQ2FzZUNvdW50ID0gZGF0YS52
YXJpYW50cy5zaXplKCk7CisgICAgICAgIGlmIChtaXNzQ29uZmlndXJhYmxlKQorICAgICAgICAg
ICAgdW5pcXVlQ2FzZUNvdW50IC09IG1pc3NDb25maWd1cmFibGUgLSAxOworICAgICAgICBpZiAo
bWlzc05vbmNvbmZpZ3VyYWJsZSkKKyAgICAgICAgICAgIHVuaXF1ZUNhc2VDb3VudCAtPSBtaXNz
Tm9uY29uZmlndXJhYmxlIC0gMTsKKyAgICAgICAgaW50IHRydWVCbG9jayA9IG1pc3NDb25maWd1
cmFibGUgPyB1bmlxdWVDYXNlQ291bnQgLSAxIDogLTE7CisgICAgICAgIGludCBmYWxzZUJsb2Nr
ID0gbWlzc05vbmNvbmZpZ3VyYWJsZSA/IHVuaXF1ZUNhc2VDb3VudCAtIDEgLSAhIW1pc3NDb25m
aWd1cmFibGUgOiAtMTsKKworICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2ssIDI+IGJsb2Nrcyh1
bmlxdWVDYXNlQ291bnQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9ja3Muc2l6ZSgp
OyBpLS07KQorICAgICAgICAgICAgYmxvY2tzW2ldID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgZXhpdCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmVjdG9yPFN3
aXRjaENhc2UsIDI+IGNhc2VzOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VT
ZXQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEudmFyaWFudHMuc2l6ZSgpLCBibG9j
ayA9IDA7IGktLTspIHsKKyAgICAgICAgICAgIERlbGV0ZUJ5SWRWYXJpYW50IHZhcmlhbnQgPSBk
YXRhLnZhcmlhbnRzW2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwor
ICAgICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGlmICh2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hD
YXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbYmxvY2srK10sIFdlaWdodCgx
KSkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0
Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbdmFyaWFudC5yZXN1bHQo
KSA/IHRydWVCbG9jayA6IGZhbHNlQmxvY2tdLCBXZWlnaHQoMSkpKTsKKyAgICAgICAgfQorICAg
ICAgICBib29sIHN0cnVjdHVyZXNDaGVja2VkID0gbV9pbnRlcnByZXRlci5mb3JOb2RlKG1fbm9k
ZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoYmFzZVNldCk7CisgICAgICAgIGVt
aXRTd2l0Y2hGb3JNdWx0aUJ5T2Zmc2V0KGJhc2UsIHN0cnVjdHVyZXNDaGVja2VkLCBjYXNlcywg
ZXhpdCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5tX25leHRCbG9j
azsKKworICAgICAgICBWZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDI+IHJlc3VsdHM7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCksIGJsb2NrID0gMDsgaS0t
OykgeworICAgICAgICAgICAgRGVsZXRlQnlJZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFu
dHNbaV07CisgICAgICAgICAgICBpZiAoIXZhcmlhbnQubmV3U3RydWN0dXJlKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1ti
bG9ja10sIGJsb2NrICsgMSA8IGJsb2Nrcy5zaXplKCkgPyBibG9ja3NbYmxvY2sgKyAxXSA6IGV4
aXQpOworCisgICAgICAgICAgICBpZiAodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkgeworICAgICAg
ICAgICAgICAgIExWYWx1ZSBzdG9yYWdlOworCisgICAgICAgICAgICAgICAgaWYgKGlzSW5saW5l
T2Zmc2V0KHZhcmlhbnQub2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlID0g
YmFzZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Ug
PSBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KTsKKworICAg
ICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkobV9vdXQuaW50NjRaZXJvLCBzdG9yYWdlLCBkYXRh
LmlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQub2Zmc2V0KCkpOworCisgICAgICAgICAgICAgICAg
QVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IHZhcmlhbnQu
bmV3U3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSB2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAg
ICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1
Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
KSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IodmFyaWFudC5yZXN1bHQoKSA/
IG1fb3V0LmJvb2xlYW5UcnVlIDogbV9vdXQuYm9vbGVhbkZhbHNlKSk7CisgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICArK2Jsb2NrOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG1pc3NOb25jb25maWd1cmFibGUpIHsKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGJsb2Nrc1tmYWxzZUJsb2NrXSk7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKSk7CisgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWlzc0NvbmZpZ3Vy
YWJsZSkgeworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW3RydWVCbG9ja10sIGV4
aXQpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xl
YW5UcnVlKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisgICAgICAg
IH0KKworICAgICAgICBtX291dC5hcHBlbmRUbyhleGl0LCBjb250aW51YXRpb24pOworICAgICAg
ICBpZiAoIXN0cnVjdHVyZXNDaGVja2VkKQorICAgICAgICAgICAgc3BlY3VsYXRlKEJhZENhY2hl
LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmJvb2xlYW5UcnVlKTsKKyAgICAgICAgbV9vdXQu
dW5yZWFjaGFibGUoKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKKyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5waGkoSW50MzIsIHJlc3VsdHMpKTsK
KyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTWF0Y2hTdHJ1Y3R1cmUoKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggYTA5YjA1NjVlYTI2YjQzMGUzOTJjYzRjNGI4
NGFkZDc1YmMzZTRjNy4uMDE5MjIwYzQ1NTFmMTM0NDA1YjRmMTJmOTI1YjZkYWY5YzQ1NmIwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTQ0NywxMSArNDQ3LDExIEBAIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KAogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNl
bGwpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJu
IHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0cnVlLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKLQotICAgIGlmIChwYXJzZUluZGV4KHByb3BlcnR5
TmFtZSkpCisgICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAo
dGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCB0cnVlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVk
RXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCmluZGV4IDUyMDhhY2RiYmRmZjg3MjUwYzIyY2FiMGM0ZWZkNjM0MTBkYWRlN2QuLjI3
MWU4MWMxYTcwMDA5MjM3MTllMWE5Yjg5NDM1NjNjZjY4MDRhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMTEsMTIgKzIwMTEsNyBAQCBib29s
IEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcgogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHN0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHBy
b3BlcnR5TmFtZSwgb2Zmc2V0LCAmZGVmZXJyZWRXYXRjaHBvaW50RmlyZSk7CiAgICAgICAgICAg
ICBzbG90LnNldEhpdChvZmZzZXQpOwotICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSAmJiAhc3RydWN0dXJlLT5oYXNJbmRleGluZ0hlYWRlcih0aGlzT2JqZWN0KSkgewot
ICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5tX2J1dHRlcmZseSk7Ci0gICAgICAg
ICAgICAgICAgdGhpc09iamVjdC0+bnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgdGhp
c09iamVjdC0+c3RydWN0dXJlSUQoKSwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgb2Zmc2V0
ID0gaW52YWxpZE9mZnNldDsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tYXhP
ZmZzZXQoKSA9PSBpbnZhbGlkT2Zmc2V0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgfHwgIXRoaXNPYmplY3QtPnN0cnVj
dHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+
c2V0U3RydWN0dXJlKHZtLCBzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNzY3NTliNjUwMWM4NDY0MDQ5ZDlhZWE5
M2U5Y2EzZmMzZTEzMDc4MC4uMWRiZGMwYzI3MWNiMzIxYmJmYjhlMTM0M2I5MjFkNjRmZDkyOTZh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTQ3OCwx
MCArNDc4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgfHwgaGlqYWNrc0luZGV4aW5nSGVhZGVy
KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxs
KikgY29uc3Q7Ci0gICAgYm9vbCBtYXlIYXZlSW5kZXhpbmdIZWFkZXIoKSBjb25zdDsKLSAgICBi
b29sIGNhbkNhY2hlRGVsZXRlSUMoKSBjb25zdDsKLSAgICAKKyAgICBib29sIGhhc0luZGV4aW5n
SGVhZGVyKGNvbnN0IEpTQ2VsbCopIGNvbnN0OyAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpOwogCiAgICAgUHJv
cGVydHlPZmZzZXQgZ2V0KFZNJiwgUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAppbmRleCBiMmVkODU4YjhmNjg3MWQ1
NzExZjA4OTQ2ZDk0MWU5NjIzYWFhMGVmLi41ZmE3MDEzY2I3ZmQ0OGFiZWRkODkyZDZiOWMxYjk3
YTExNTE0Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSW5saW5lcy5oCkBAIC0yMjgsMjIgKzIyOCw2IEBAIGlubGluZSBib29sIFN0cnVjdHVyZTo6
aGFzSW5kZXhpbmdIZWFkZXIoY29uc3QgSlNDZWxsKiBjZWxsKSBjb25zdAogICAgIHJldHVybiBq
c0Nhc3Q8Y29uc3QgSlNBcnJheUJ1ZmZlclZpZXcqPihjZWxsKS0+bW9kZSgpID09IFdhc3RlZnVs
VHlwZWRBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXlIYXZlSW5kZXhpbmdI
ZWFkZXIoKSBjb25zdAotewotICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5
cGUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFpc1R5cGVkVmlldyh0eXBl
ZEFycmF5VHlwZUZvclR5cGUobV9ibG9iLnR5cGUoKSkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJvb2wgU3RydWN0dXJlOjpjYW5DYWNo
ZURlbGV0ZUlDKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlU
eXBlRm9yVHlwZShtX2Jsb2IudHlwZSgpKSk7Ci19Ci0KIGlubGluZSBib29sIFN0cnVjdHVyZTo6
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCkKIHsKICAgICByZXR1cm4gdHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgJiYg
Z2xvYmFsT2JqZWN0KCkgPT0gbGV4aWNhbEdsb2JhbE9iamVjdDsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2I0MmU3ZDU1MzY2NjczZWFh
NTc3M2ExOTc4NTU3YTRlY2NjMmNiMS4uNzEyYzVkYTcxNDI3MGNjY2E3YzIyZTUzZmMxZGY5YTQx
NWZlZGMyMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAyMC0wNC0wNiAgSnVzdGluIE1pY2hhdWQgIDxqdXN0
aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgZGVsZXRlQnlJZCB0byBiZSBj
YWNoZWQgaW4gdGhlIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4NjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAg
ICAgICAgKiBtaWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3BlcnR5LWFsbG9jYXRpb24tc2lua2lu
Zy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAobm9JbmxpbmUuYXNzZXJ0
LmJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LmRvQWxsb2MxKToKKyAgICAg
ICAgKG5vSW5saW5lLmRvQWxsb2MxKToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcG9seXZh
cmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAg
ICAgIChibGFja2JveCk6CisgICAgICAgIChub0lubGluZS5ibGFja2JveC5wb2x5dmFyaWFudCk6
CisgICAgICAgIChkb0FsbG9jMSk6CisgICAgICAgIChub0lubGluZS5kb0FsbG9jMS5kb0FsbG9j
Mik6CisgICAgICAgIChub0lubGluZS5kb0FsbG9jMik6CisgICAgICAgICogc3RyZXNzL2RlbGV0
ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAg
ICAgIChub0lubGluZS5hc3NlcnQuYXNzZXJ0X3Rocm93cyk6CisgICAgICAgIChub0lubGluZS5h
c3NlcnRfdGhyb3dzLmJsYWNrYm94KToKKyAgICAgICAgKG5vSW5saW5lLmJsYWNrYm94LnRlc3RT
aW5nbGVTdHJ1Y3R1cmUuZG9BbGxvYzEpOgorICAgICAgICAobm9JbmxpbmUuYmxhY2tib3gudGVz
dFNpbmdsZVN0cnVjdHVyZSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJl
LnRlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUuZG9EZWxldGUyKToKKyAgICAgICAgKG5vSW5saW5l
LnRlc3RTaW5nbGVTdHJ1Y3R1cmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS5kb0FsbG9jMik6
CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlLnRlc3RJbmxpbmVTaW5nbGVT
dHJ1Y3R1cmUpOgorICAgICAgICAobm9JbmxpbmUudGVzdElubGluZVNpbmdsZVN0cnVjdHVyZS50
ZXN0RXhpdC5kb0RlbGV0ZTMpOgorICAgICAgICAobm9JbmxpbmUudGVzdElubGluZVNpbmdsZVN0
cnVjdHVyZS50ZXN0RXhpdCk6CisgICAgICAgIChub0lubGluZS50ZXN0RXhpdC50ZXN0U2luZ2xl
U3RydWN0dXJlTWlzcy5kb0FsbG9jNCk6CisgICAgICAgIChub0lubGluZS50ZXN0RXhpdC50ZXN0
U2luZ2xlU3RydWN0dXJlTWlzcyk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0
dXJlTWlzcy50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdC5zdHJpbmdfYXBwZWFyZWRfaGVy
ZS5kb0FsbG9jNSk6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzcy50
ZXN0U2luZ2xlU3RydWN0dXJlTWlzc1N0cmljdCk6CisgICAgICAgIChub0lubGluZS50ZXN0U2lu
Z2xlU3RydWN0dXJlTWlzc1N0cmljdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3Vy
YWJsZS5kb0FsbG9jNik6CisgICAgICAgIChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlz
c1N0cmljdC50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZSk6CisgICAgICAg
IChub0lubGluZS50ZXN0U2luZ2xlU3RydWN0dXJlTWlzc05vbkNvbmZpZ3VyYWJsZS50ZXN0U2lu
Z2xlU3RydWN0dXJlRW1wdHkuZG9BbGxvYzcpOgorICAgICAgICAobm9JbmxpbmUudGVzdFNpbmds
ZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUudGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5KToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0eS50ZXN0UG9seW1vcnBo
aWMuZG9EZWxldGU4KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RTaW5nbGVTdHJ1Y3R1cmVFbXB0
eS50ZXN0UG9seW1vcnBoaWMpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3JwaGljLnRl
c3RQb2x5dmFyaWFudC5kb0RlbGV0ZTkpOgorICAgICAgICAobm9JbmxpbmUudGVzdFBvbHltb3Jw
aGljLnRlc3RQb2x5dmFyaWFudC5wb2x5dmFyaWFudCk6CisgICAgICAgIChub0lubGluZS50ZXN0
UG9seW1vcnBoaWMudGVzdFBvbHl2YXJpYW50KToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RQb2x5
dmFyaWFudC50ZXN0Q29uc3RhbnRGb2xkaW5nLmRvRGVsZXRlMTApOgorICAgICAgICAobm9Jbmxp
bmUudGVzdFBvbHl2YXJpYW50LnRlc3RDb25zdGFudEZvbGRpbmcpOgorICAgICAgICAobm9Jbmxp
bmUudGVzdENvbnN0YW50Rm9sZGluZy50ZXN0T2JqZWN0U2lua2luZy5kb0FsbG9jMTEpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdENvbnN0YW50Rm9sZGluZy50ZXN0T2JqZWN0U2lua2luZyk6Cisg
ICAgICAgIChub0lubGluZS50ZXN0T2JqZWN0U2lua2luZy50ZXN0UHJveHkuZG9BbGxvYzEyKToK
KyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmplY3RTaW5raW5nLnRlc3RQcm94eS5ub0lubGluZS5k
b0RlbGV0ZTEyKToKKyAgICAgICAgKG5vSW5saW5lLnRlc3RPYmplY3RTaW5raW5nLnRlc3RQcm94
eSk6CisgICAgICAgIChub0lubGluZS50ZXN0UHJveHkudGVzdFR5cGVkQXJyYXkuZG9EZWxldGUx
Mik6CisgICAgICAgIChub0lubGluZS50ZXN0UHJveHkudGVzdFR5cGVkQXJyYXkpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdFR5cGVkQXJyYXkudGVzdE1pc3NNaXhlZC5kb0RlbGV0ZTEzKToKKyAg
ICAgICAgKG5vSW5saW5lLnRlc3RUeXBlZEFycmF5LnRlc3RNaXNzTWl4ZWQpOgorICAgICAgICAo
bm9JbmxpbmUudGVzdE1pc3NNaXhlZC50ZXN0TWlzc05vbk1peGVkLmRvRGVsZXRlMTQpOgorICAg
ICAgICAobm9JbmxpbmUudGVzdE1pc3NNaXhlZC50ZXN0TWlzc05vbk1peGVkKToKKyAgICAgICAg
KG5vSW5saW5lLnRlc3RNaXNzTm9uTWl4ZWQudGVzdEJ5VmFsLmRvRGVsZXRlMTUpOgorICAgICAg
ICAobm9JbmxpbmUudGVzdE1pc3NOb25NaXhlZC50ZXN0QnlWYWwpOgorCiAyMDIwLTA0LTA1ICBS
b3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBKU0Mgc2hl
bGwgc2hvdWxkbid0IHRyZWF0IE5VTCBhcyBhIHRlcm1pbmF0b3Igd2hlbiBwcmludGluZyBhIEpT
IHN0cmluZwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsZXRlLXByb3Bl
cnR5LWFsbG9jYXRpb24tc2lua2luZy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbGV0
ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2MzQ2NGYzMTc3
Y2I1OWZhNmNmOTI0ZTE0MjI3NDY1OTQwNDEzNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2RlbGV0ZS1wcm9wZXJ0eS1hbGxvY2F0aW9uLXNpbmtpbmcuanMKQEAg
LTAsMCArMSwyNiBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMg
MyIKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorbm9JbmxpbmUo
YXNzZXJ0KQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0dXJuIHgKK30KK25vSW5s
aW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiBkb0FsbG9jMSgpIHsKKyAgICBsZXQgb2JqID0ge30K
KyAgICBvYmoueCA9IDUKKyAgICBvYmoueSA9IDcKKyAgICBvYmoueSA9IGJsYWNrYm94KG9iai55
KQorICAgIGFzc2VydChkZWxldGUgb2JqLngpCisgICAgcmV0dXJuIG9iai55Cit9Citub0lubGlu
ZShkb0FsbG9jMSkKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwMDAwMDsgKytpKSB7CisgICAg
ZG9BbGxvYzEoKQorfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seXZh
cmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seXZh
cmlhbnQtZGVsZXRlLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmN2NiY2JkNjk5YjNiMDMyNjdj
YjAxZjEyN2EwZjUyMmMxZWI1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9wb2x5dmFyaWFudC1kZWxldGUtcHJvcGVydHkuanMKQEAgLTAsMCArMSw0MSBAQAor
Ly9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIKKworZnVuY3Rpb24g
YXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29uZGl0aW9uKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7
CisgICAgcmV0dXJuIHgKK30KK25vSW5saW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiBwb2x5dmFy
aWFudCh4KSB7CisgICAgYXNzZXJ0KGRlbGV0ZSB4LngpCit9CisKK2Z1bmN0aW9uIGRvQWxsb2Mx
KCkgeworICAgIGxldCBvYmogPSB7fQorICAgIG9iai54ID0gNQorICAgIG9iai55ID0gNworICAg
IG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgcG9seXZhcmlhbnQob2JqKQorICAgIHJldHVy
biBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzEpCisKK2Z1bmN0aW9uIGRvQWxsb2MyKCkgewor
ICAgIGxldCBvYmogPSB7fQorICAgIG9iai54ID0gNQorICAgIG9iai5iID0gOQorICAgIG9iai55
ID0gNworICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgcG9seXZhcmlhbnQob2JqKQor
ICAgIHJldHVybiBvYmoueQorfQorbm9JbmxpbmUoZG9BbGxvYzIpCisKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDAwMDA7ICsraSkgeworICAgIGRvQWxsb2MxKCkKKyAgICBkb0FsbG9jMigpCit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2RlbGV0ZS1wcm9wZXJ0eS1kZmctaW5saW5lLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkzYmVlN2JjYzEyYzlkMmRkN2E0MjgxNjk1MTUwZjNmZmRiMzZhMTIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9kZWxldGUtcHJvcGVydHktZGZnLWlubGluZS5qcwpAQCAt
MCwwICsxLDQwOSBAQAorZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbikgeworICAgIGlmICghY29u
ZGl0aW9uKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImFzc2VydGlvbiBmYWlsZWQiKQorfQor
bm9JbmxpbmUoYXNzZXJ0KQorCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGYpIHsKKyAgICB0cnkg
eworICAgICAgICBmKCkKKyAgICB9IGNhdGNoIHsKKyAgICAgICAgcmV0dXJuCisgICAgfQorICAg
IHRocm93IG5ldyBFcnJvcigiYXNzZXJ0aW9uIGZhaWxlZCIpCit9Citub0lubGluZShhc3NlcnRf
dGhyb3dzKQorCitmdW5jdGlvbiBibGFja2JveCh4KSB7CisgICAgcmV0dXJuIHgKK30KK25vSW5s
aW5lKGJsYWNrYm94KQorCitmdW5jdGlvbiB0ZXN0U2luZ2xlU3RydWN0dXJlKCkgeworICAgIGZ1
bmN0aW9uIGRvQWxsb2MxKCkgeworICAgICAgICBsZXQgb2JqID0ge30KKyAgICAgICAgb2JqLngg
PSA1CisgICAgICAgIG9iai55ID0gNworICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQor
ICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai54KQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9
CisgICAgbm9JbmxpbmUoZG9BbGxvYzEpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkgeworICAgICAgICBkb0FsbG9jMSgpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNp
bmdsZVN0cnVjdHVyZSkKKworZnVuY3Rpb24gdGVzdElubGluZVNpbmdsZVN0cnVjdHVyZSgpIHsK
KyAgICBmdW5jdGlvbiBkb0RlbGV0ZTIobykgeworICAgICAgICBhc3NlcnQoZGVsZXRlIG8ueCkK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBkb0FsbG9jMigpIHsKKyAgICAgICAgbGV0IG9iaiA9IHt9
CisgICAgICAgIG9iai54ID0gNQorICAgICAgICBvYmoueSA9IDcKKyAgICAgICAgb2JqLnkgPSBi
bGFja2JveChvYmoueSkKKyAgICAgICAgZG9EZWxldGUyKG9iaikKKyAgICAgICAgcmV0dXJuIG9i
ai55CisgICAgfQorICAgIG5vSW5saW5lKGRvQWxsb2MyKQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMih7IGksIGY6IDQgfSkKKyAgICAgICAg
ZG9EZWxldGUyKHsgaSwgZTogNCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBkOiA0IH0pCisg
ICAgICAgIGRvRGVsZXRlMih7IGksIGM6IDQgfSkKKyAgICAgICAgZG9EZWxldGUyKHsgaSwgYjog
NCB9KQorICAgICAgICBkb0RlbGV0ZTIoeyBpLCBhOiA0IH0pCisgICAgICAgIGRvQWxsb2MyKCkK
KyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAg
ICBkb0FsbG9jMigpCisgICAgfQorfQorbm9JbmxpbmUodGVzdElubGluZVNpbmdsZVN0cnVjdHVy
ZSkKKworZnVuY3Rpb24gdGVzdEV4aXQoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUzKG9iaikg
eworICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai55KQorICAgIH0KKyAgICBub0lubGluZShkb0Rl
bGV0ZTMpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgICAg
IGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDUwOyArK2kpIHsKKyAgICAgICAgZG9EZWxldGUzKHsgaSwgZjogNCB9KQorICAgICAgICBkb0Rl
bGV0ZTMoeyBpLCBlOiA0IH0pCisgICAgICAgIGRvRGVsZXRlMyh7IGksIGQ6IDQgfSkKKyAgICAg
ICAgZG9EZWxldGUzKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTMoeyBpLCBiOiA0IH0p
CisgICAgICAgIGRvRGVsZXRlMyh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTMoeyBpLCBhOiA0IH0p
CisgICAgfQorfQorbm9JbmxpbmUodGVzdEV4aXQpCisKK2Z1bmN0aW9uIHRlc3RTaW5nbGVTdHJ1
Y3R1cmVNaXNzKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M0KCkgeworICAgICAgICBsZXQgb2Jq
ID0ge30KKyAgICAgICAgb2JqLnggPSA1CisgICAgICAgIG9iai55ID0gNworICAgICAgICBvYmou
eSA9IGJsYWNrYm94KG9iai55KQorICAgICAgICBhc3NlcnQoZGVsZXRlIG9iai56KQorICAgICAg
ICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzQpCisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jNCgpCisgICAg
fQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVjdHVyZU1pc3MpCisKK2Z1bmN0aW9uIHRlc3RT
aW5nbGVTdHJ1Y3R1cmVNaXNzU3RyaWN0KCkgeworICAgICJ1c2Ugc3RyaWN0IgorCisgICAgZnVu
Y3Rpb24gZG9BbGxvYzUoKSB7CisgICAgICAgIGxldCBvYmogPSB7fQorICAgICAgICBvYmoueSA9
IDUKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgIngiLCB7CisgICAgICAgICAg
ICBjb25maWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0p
CisgICAgICAgIG9iai55ID0gYmxhY2tib3gob2JqLnkpCisgICAgICAgIGFzc2VydF90aHJvd3Mo
KCkgPT4gZGVsZXRlIG9iai54KQorICAgICAgICByZXR1cm4gb2JqLnkKKyAgICB9CisgICAgbm9J
bmxpbmUoZG9BbGxvYzUpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkg
eworICAgICAgICBkb0FsbG9jNSgpCisgICAgfQorfQorbm9JbmxpbmUodGVzdFNpbmdsZVN0cnVj
dHVyZU1pc3NTdHJpY3QpCisKK2Z1bmN0aW9uIHRlc3RTaW5nbGVTdHJ1Y3R1cmVNaXNzTm9uQ29u
ZmlndXJhYmxlKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2M2KCkgeworICAgICAgICBsZXQgb2Jq
ID0ge30KKyAgICAgICAgb2JqLnkgPSA1CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
YmosICJ4IiwgeworICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAg
IHZhbHVlOiA0MQorICAgICAgICB9KQorICAgICAgICBvYmoueSA9IGJsYWNrYm94KG9iai55KQor
ICAgICAgICBhc3NlcnQoIShkZWxldGUgb2JqLngpKQorICAgICAgICByZXR1cm4gb2JqLnkKKyAg
ICB9CisgICAgbm9JbmxpbmUoZG9BbGxvYzYpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkgeworICAgICAgICBkb0FsbG9jNigpCisgICAgfQorfQorbm9JbmxpbmUodGVz
dFNpbmdsZVN0cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUpCisKK2Z1bmN0aW9uIHRlc3RTaW5n
bGVTdHJ1Y3R1cmVFbXB0eSgpIHsKKyAgICBmdW5jdGlvbiBkb0FsbG9jNygpIHsKKyAgICAgICAg
bGV0IG9iaiA9IHsgYTogMSwgYjogMn0KKyAgICAgICAgb2JqWzFdID0gNQorICAgICAgICBkZWxl
dGUgb2JqWzFdCisgICAgICAgIGJsYWNrYm94KCgpID0+IG9iai54ID0gNSkoKQorICAgICAgICBh
c3NlcnQoT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMykKKyAgICAgICAgYXNzZXJ0KGRlbGV0
ZSBvYmouYSkKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmouYikKKyAgICAgICAgYXNzZXJ0KGRl
bGV0ZSBvYmoueCkKKyAgICAgICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09IDAp
CisgICAgICAgIG9iai54ID0gNworICAgICAgICByZXR1cm4gb2JqCisgICAgfQorICAgIG5vSW5s
aW5lKGRvQWxsb2M3KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsK
KyAgICAgICAgZG9BbGxvYzcoKQorICAgIH0KK30KK25vSW5saW5lKHRlc3RTaW5nbGVTdHJ1Y3R1
cmVFbXB0eSkKKworZnVuY3Rpb24gdGVzdFBvbHltb3JwaGljKCkgeworICAgIGZ1bmN0aW9uIGRv
RGVsZXRlOChvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAgICAgICAgcmV0
dXJuIG9iagorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTgpCisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICBkb0RlbGV0ZTgoeyBpLCBhOiA0IH0pCisgICAg
fQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgICAgICBkb0Rl
bGV0ZTgoeyBpLCBmOiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTgoeyBpLCBlOiA0LCB5
OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlOCh7IGksIGQ6IDQgfSkK
KyAgICAgICAgZG9EZWxldGU4KHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTgoeyBpLCBi
OiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTgoeyBpLCBhOiA0LCB5OiAxMCB9KS55ID09
PSB1bmRlZmluZWQpCisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyAr
K2kpIHsKKyAgICAgICAgZG9EZWxldGU4KHsgaSwgYTogNCB9KQorICAgIH0KK30KK25vSW5saW5l
KHRlc3RQb2x5bW9ycGhpYykKKworZnVuY3Rpb24gdGVzdFBvbHl2YXJpYW50KCkgeworICAgIGZ1
bmN0aW9uIGRvRGVsZXRlOShvYmopIHsKKyAgICAgICAgYXNzZXJ0KGRlbGV0ZSBvYmoueSkKKyAg
ICAgICAgcmV0dXJuIG9iagorICAgIH0KKworICAgIGZ1bmN0aW9uIHBvbHl2YXJpYW50KG9iaikg
eworICAgICAgICByZXR1cm4gZG9EZWxldGU5KG9iaikKKyAgICB9CisgICAgbm9JbmxpbmUocG9s
eXZhcmlhbnQpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICBw
b2x5dmFyaWFudCh7IGksIGE6IDQgfSkKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlOSh7IGksIGY6IDQgfSkKKyAgICAgICAg
YXNzZXJ0KGRvRGVsZXRlOSh7IGksIGU6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAg
ICAgICAgZG9EZWxldGU5KHsgaSwgZDogNCB9KQorICAgICAgICBkb0RlbGV0ZTkoeyBpLCBjOiA0
IH0pCisgICAgICAgIGRvRGVsZXRlOSh7IGksIGI6IDQgfSkKKyAgICAgICAgYXNzZXJ0KGRvRGVs
ZXRlOSh7IGksIGE6IDQsIHk6IDEwIH0pLnkgPT09IHVuZGVmaW5lZCkKKyAgICB9CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBwb2x5dmFyaWFudCh7
IGksIGE6IDQgfSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0UG9seXZhcmlhbnQpCisKK2Z1bmN0
aW9uIHRlc3RDb25zdGFudEZvbGRpbmcoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUxMChvYmop
IHsKKyAgICAgICAgaWYgKCR2bS5kZmdUcnVlKCkpIHsKKyAgICAgICAgICAgIG9iaiA9IHsgaTog
MCwgYTogNSwgeTogMjAgfQorICAgICAgICB9CisgICAgICAgIGFzc2VydChkZWxldGUgb2JqLnkp
CisgICAgICAgIGFzc2VydCgoZGVsZXRlIG9iai56KSArIDUgPT0gNikKKyAgICAgICAgcmV0dXJu
IG9iagorICAgIH0KKyAgICBub0lubGluZShkb0RlbGV0ZTEwKQorCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgYXNzZXJ0KGRvRGVsZXRlMTAoeyBpLCBh
OiA0LCB5OiAxMCB9KS55ID09PSB1bmRlZmluZWQpCisgICAgICAgIGRvRGVsZXRlMTAoeyBpLCBm
OiA0IH0pCisgICAgICAgIGFzc2VydChkb0RlbGV0ZTEwKHsgaSwgZTogNCwgeTogMTAgfSkueSA9
PT0gdW5kZWZpbmVkKQorICAgICAgICBkb0RlbGV0ZTEwKHsgaSwgZDogNCB9KQorICAgICAgICBk
b0RlbGV0ZTEwKHsgaSwgYzogNCB9KQorICAgICAgICBkb0RlbGV0ZTEwKHsgaSwgYjogNCB9KQor
ICAgIH0KK30KK25vSW5saW5lKHRlc3RDb25zdGFudEZvbGRpbmcpCisKK2Z1bmN0aW9uIHRlc3RP
YmplY3RTaW5raW5nKCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2MxMShpKSB7CisgICAgICAgIGxl
dCBvYmogPSB7fQorICAgICAgICBvYmoueCA9IDEKKyAgICAgICAgb2JqLnkgPSAyCisgICAgICAg
IGlmIChpID09IDApCisgICAgICAgICAgICBvYmouYSA9IDMKKyAgICAgICAgZWxzZSBpZiAoaSA9
PSAxKQorICAgICAgICAgICAgb2JqLmIgPSAzCisgICAgICAgIGVsc2UgaWYgKGkgPT0gMykKKyAg
ICAgICAgICAgIG9iai5jID0gMworICAgICAgICBkZWxldGUgb2JqLngKKyAgICAgICAgYXNzZXJ0
KChkZWxldGUgb2JqLngpICsgNSA9PSA2KQorICAgICAgICByZXR1cm4gb2JqLnkKKworICAgIH0K
KyAgICBub0lubGluZShkb0FsbG9jMTEpCisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9BbGxvYzExKGkgJSAzKSA9PSAyKQorICAgIH0K
KyAgICBhc3NlcnQoZG9BbGxvYzExKDQpID09IDIpCit9Citub0lubGluZSh0ZXN0T2JqZWN0U2lu
a2luZykKKworZnVuY3Rpb24gdGVzdFByb3h5KCkgeworICAgIGZ1bmN0aW9uIGRvQWxsb2MxMigp
IHsKKyAgICAgICAgbGV0IG9iaiA9IHt9CisgICAgICAgIG9iai54ID0gMQorICAgICAgICBvYmou
Y291bnQgPSAwCisKKyAgICAgICAgY29uc3QgaGFuZGxlciA9IHsKKyAgICAgICAgICBkZWxldGVQ
cm9wZXJ0eSh0YXJnZXQsIHByb3ApIHsKKyAgICAgICAgICAgIGFzc2VydChwcm9wID09ICJ6IikK
KyAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQuegorICAgICAgICAgICAgKytvYmouY291bnQKKyAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFByb3h5KG9iaiwgaGFu
ZGxlcikKKworICAgIH0KKyAgICBub0lubGluZShkb0FsbG9jMTIpCisKKyAgICBmdW5jdGlvbiBk
b0RlbGV0ZTEyKG9iaikgeworICAgICAgICBkZWxldGUgb2JqLnoKKyAgICB9CisgICAgbm9Jbmxp
bmUoZG9EZWxldGUxMikKKworICAgIGxldCBmb28gPSBkb0FsbG9jMTIoKQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVsZXRlMTIoZm9vKQorICAg
IH0KKyAgICBhc3NlcnQoZm9vLmNvdW50ID0gMTAwMDAwMCkKK30KK25vSW5saW5lKHRlc3RQcm94
eSkKKworZnVuY3Rpb24gdGVzdFR5cGVkQXJyYXkoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxldGUx
MihvYmopIHsKKyAgICAgICAgb2JqLmNvbnN0cnVjdG9yID0gbnVsbAorICAgICAgICBhc3NlcnQo
ZGVsZXRlIG9iai5jb25zdHJ1Y3RvcikKKyAgICB9CisgICAgbm9JbmxpbmUoZG9EZWxldGUxMikK
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIGRvRGVs
ZXRlMTIobmV3IFVpbnQ4QXJyYXkoKSkKKyAgICB9CisKKyAgICBsZXQgZm9vID0gbmV3IFVpbnQ4
QXJyYXkoMTIpOworICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoZm9vLmJ1ZmZlcikKKyAgICBkb0Rl
bGV0ZTEyKGZvbykKKyAgICBhc3NlcnRfdGhyb3dzKCgpID0+IGRlbGV0ZSBmb29bMF0pCit9Citu
b0lubGluZSh0ZXN0VHlwZWRBcnJheSkKKworZnVuY3Rpb24gdGVzdE1pc3NNaXhlZCgpIHsKKyAg
ICBmdW5jdGlvbiBkb0RlbGV0ZTEzKG9iaikgeworICAgICAgICByZXR1cm4gZGVsZXRlIG9iai54
CisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTMpCisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBhc3NlcnQoZG9EZWxldGUxMyh7IHk6IDQgfSkp
CisgICAgICAgIGxldCBmb28gPSB7fQorICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm9v
LCAieCIsIHsKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsCisgICAgICAgICAgICB2
YWx1ZTogNDEKKyAgICAgICAgfSkKKyAgICAgICAgYXNzZXJ0KCFkb0RlbGV0ZTEzKGZvbykpCisg
ICAgfQorfQorbm9JbmxpbmUodGVzdE1pc3NNaXhlZCkKKworZnVuY3Rpb24gdGVzdE1pc3NOb25N
aXhlZCgpIHsKKyAgICBmdW5jdGlvbiBkb0RlbGV0ZTE0KG9iaikgeworICAgICAgICByZXR1cm4g
ZGVsZXRlIG9iai54CisgICAgfQorICAgIG5vSW5saW5lKGRvRGVsZXRlMTQpCisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICBsZXQgZm9vID0ge30KKyAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZvbywgIngiLCB7CisgICAgICAgICAgICBjb25m
aWd1cmFibGU6IGZhbHNlLAorICAgICAgICAgICAgdmFsdWU6IDQxCisgICAgICAgIH0pCisgICAg
ICAgIGFzc2VydCghZG9EZWxldGUxNChmb28pKQorCisgICAgICAgIGZvbyA9IHsgeTogNCB9Cisg
ICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4IiwgeworICAgICAgICAgICAgY29u
ZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MAorICAgICAgICB9KQorICAg
ICAgICBhc3NlcnQoIWRvRGVsZXRlMTQoZm9vKSkKKyAgICB9Cit9Citub0lubGluZSh0ZXN0TWlz
c05vbk1peGVkKQorCitmdW5jdGlvbiB0ZXN0QnlWYWwoKSB7CisgICAgZnVuY3Rpb24gZG9EZWxl
dGUxNShvYmopIHsKKyAgICAgICAgcmV0dXJuIGRlbGV0ZSBvYmpbIngiXQorICAgIH0KKyAgICBu
b0lubGluZShkb0RlbGV0ZTE1KQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgICAgIGFzc2VydChkb0RlbGV0ZTE1KHsgeTogNCB9KSkKKyAgICAgICAgbGV0IGZv
byA9IHt9CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmb28sICJ4IiwgeworICAgICAg
ICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSwKKyAgICAgICAgICAgIHZhbHVlOiA0MQorICAgICAg
ICB9KQorICAgICAgICBhc3NlcnQoIWRvRGVsZXRlMTUoZm9vKSkKKworICAgICAgICBmb28gPSB7
IHg6IDQgfQorICAgICAgICBhc3NlcnQoZG9EZWxldGUxNShmb28pKQorICAgICAgICBhc3NlcnQo
Zm9vLnggPT0gdW5kZWZpbmVkKQorICAgICAgICBnYygpCisgICAgfQorfQorbm9JbmxpbmUodGVz
dEJ5VmFsKQorCit0ZXN0QnlWYWwoKQordGVzdE1pc3NNaXhlZCgpCit0ZXN0TWlzc05vbk1peGVk
KCkKK3Rlc3RUeXBlZEFycmF5KCkKK3Rlc3RQcm94eSgpCit0ZXN0U2luZ2xlU3RydWN0dXJlKCkK
K3Rlc3RJbmxpbmVTaW5nbGVTdHJ1Y3R1cmUoKQordGVzdEV4aXQoKQordGVzdFNpbmdsZVN0cnVj
dHVyZU1pc3MoKQordGVzdFNpbmdsZVN0cnVjdHVyZU1pc3NTdHJpY3QoKQordGVzdFNpbmdsZVN0
cnVjdHVyZU1pc3NOb25Db25maWd1cmFibGUoKQordGVzdFNpbmdsZVN0cnVjdHVyZUVtcHR5KCkK
K3Rlc3RQb2x5bW9ycGhpYygpCit0ZXN0UG9seXZhcmlhbnQoKQordGVzdENvbnN0YW50Rm9sZGlu
ZygpCit0ZXN0T2JqZWN0U2lua2luZygpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>