<?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>156378</bug_id>
          
          <creation_ts>2016-04-07 16:40:51 -0700</creation_ts>
          <short_desc>tryGetById should be supported by the DFG/FTL</short_desc>
          <delta_ts>2016-08-16 16:59:17 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1181974</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-07 16:40:51 -0700</bug_when>
    <thetext>tryGetById should be supported by the DFG/FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181979</commentid>
    <comment_count>1</comment_count>
      <attachid>275959</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-07 16:49:00 -0700</bug_when>
    <thetext>Created attachment 275959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182217</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-04-08 11:16:27 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:979:66: error: cannot initialize a parameter of type &apos;GPRReg&apos; (aka &apos;RegisterID&apos;) with an rvalue of type &apos;unsigned int&apos;
        cachedGetById(node-&gt;origin.semantic, baseGPR, resultGPR, node-&gt;identifierNumber(), JITCompiler::Jump(), DontSpill, AccessType::GetPure);
                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182318</commentid>
    <comment_count>3</comment_count>
      <attachid>276043</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-08 14:28:51 -0700</bug_when>
    <thetext>Created attachment 276043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182332</commentid>
    <comment_count>4</comment_count>
      <attachid>276043</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-08 15:39:57 -0700</bug_when>
    <thetext>Comment on attachment 276043
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        we do not profile the result type. This profiling is unnessary for the current

typo: /unnessary/unnecessary/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182335</commentid>
    <comment_count>5</comment_count>
      <attachid>276043</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-04-08 15:45:42 -0700</bug_when>
    <thetext>Comment on attachment 276043
Patch

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

I think you should reduce the code duplication in ByteCodeParser.

&gt; Source/JavaScriptCore/bytecode/GetByIdStatus.cpp:78
&gt; -    if (instruction[0].u.opcode == LLInt::getOpcode(op_get_array_length))
&gt; +    if (instruction[0].u.opcode == LLInt::getOpcode(op_get_array_length) || instruction[0].u.opcode == LLInt::getOpcode(op_try_get_by_id))

Can you provide clarity on why you return NoInformation when LLInt saw a try_get_by_id?

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1969
&gt; +        forNode(node).makeBytecodeTop();

Why isn&apos;t this makeHeapTop()?  Can TryGetById return the empty value?  If not, then this should be HeapTop.

Also, it seems like you should add folding here that is like the folding we do in GetById.  If you don&apos;t add it, then please add a FIXME to that effect and link it to a bug!

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2889
&gt; +void ByteCodeParser::handleTryGetById(int destinationOperand, Node* base, unsigned identifierNumber, const GetByIdStatus&amp; getByIdStatus)

This method looks like it duplicates a *ton* of code with handleGetById.  Please try to make them common.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2896
&gt; +    if (!getByIdStatus.isSimple() || !getByIdStatus.numVariants() || !Options::useAccessInlining()) {
&gt; +        set(VirtualRegister(destinationOperand),
&gt; +            addToGraph(TryGetById, OpInfo(identifierNumber), OpInfo(SpecBytecodeTop), base));
&gt; +        return;
&gt; +    }

This is identical to the first case in handleGetById.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2904
&gt; +        if (!isFTL(m_graph.m_plan.mode)
&gt; +            || !Options::usePolymorphicAccessInlining()) {
&gt; +            set(VirtualRegister(destinationOperand),
&gt; +                addToGraph(TryGetById, OpInfo(identifierNumber), OpInfo(SpecBytecodeTop), base));
&gt; +            return;
&gt; +        }

Identical.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2932
&gt; +        // 1) Emit prototype structure checks for all chains. This could sort of maybe not be
&gt; +        //    optimal, if there is some rarely executed case in the chain that requires a lot
&gt; +        //    of checks and those checks are not watchpointable.
&gt; +        for (const GetByIdVariant&amp; variant : getByIdStatus.variants()) {
&gt; +            ASSERT(variant.intrinsic() == NoIntrinsic);
&gt; +
&gt; +            if (variant.conditionSet().isEmpty()) {
&gt; +                cases.append(MultiGetByOffsetCase(
&gt; +                    variant.structureSet(),
&gt; +                    GetByOffsetMethod::load(variant.offset())));
&gt; +                continue;
&gt; +            }
&gt; +
&gt; +            GetByOffsetMethod method = planLoad(variant.conditionSet());
&gt; +            if (!method) {
&gt; +                set(VirtualRegister(destinationOperand),
&gt; +                    addToGraph(TryGetById, OpInfo(identifierNumber), OpInfo(SpecBytecodeTop), base));
&gt; +                return;
&gt; +            }
&gt; +
&gt; +            cases.append(MultiGetByOffsetCase(variant.structureSet(), method));
&gt; +        }
&gt; +
&gt; +        if (m_graph.compilation())
&gt; +            m_graph.compilation()-&gt;noticeInlinedGetById();

So very identical.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2940
&gt; +        // 2) Emit a MultiGetByOffset
&gt; +        MultiGetByOffsetData* data = m_graph.m_multiGetByOffsetData.add();
&gt; +        data-&gt;cases = cases;
&gt; +        data-&gt;identifierNumber = identifierNumber;
&gt; +        set(VirtualRegister(destinationOperand),
&gt; +            addToGraph(MultiGetByOffset, OpInfo(data), OpInfo(SpecBytecodeTop), base));
&gt; +        return;

Identical.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2957
&gt; +    if (m_graph.compilation())
&gt; +        m_graph.compilation()-&gt;noticeInlinedGetById();
&gt; +    set(VirtualRegister(destinationOperand), loadedValue);
&gt; +}

Looks like this is the only place where this is different from handleGetById.  Basically, you want handleGetById to have a flag or something that tells it that it&apos;s the Try variant, and then you want handleGetById to return early here.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:859
&gt; +    case TryGetById: {
&gt; +        read(JSCell_structureID);
&gt; +        read(JSObject_butterfly);
&gt; +        AbstractHeap heap(NamedProperties, node-&gt;identifierNumber());
&gt; +        read(heap);
&gt; +        def(HeapLocation(NamedPropertyLoc, heap, node-&gt;child1()), LazyNode(node));
&gt; +        return;
&gt; +    }

Are you sure about this?  Can&apos;t TryGetById call any arbitrary GetOwnPropertySlot?

I think that the more conservative thing to do for now is remove the def() and make this read(Heap).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182338</commentid>
    <comment_count>6</comment_count>
      <attachid>276043</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-08 15:58:01 -0700</bug_when>
    <thetext>Comment on attachment 276043
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/GetByIdStatus.cpp:78
&gt;&gt; +    if (instruction[0].u.opcode == LLInt::getOpcode(op_get_array_length) || instruction[0].u.opcode == LLInt::getOpcode(op_try_get_by_id))
&gt; 
&gt; Can you provide clarity on why you return NoInformation when LLInt saw a try_get_by_id?

Because we don&apos;t have an LLInt cache for TryGetById. In the long run I do think that an LLInt cache should be added.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1969
&gt;&gt; +        forNode(node).makeBytecodeTop();
&gt; 
&gt; Why isn&apos;t this makeHeapTop()?  Can TryGetById return the empty value?  If not, then this should be HeapTop.
&gt; 
&gt; Also, it seems like you should add folding here that is like the folding we do in GetById.  If you don&apos;t add it, then please add a FIXME to that effect and link it to a bug!

Yeah, it should be HeapTop. I will fix.

The folding that we do here will not help any current uses of this operation since they all use values on the prototype. I&apos;ll create a bug though.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2889
&gt;&gt; +void ByteCodeParser::handleTryGetById(int destinationOperand, Node* base, unsigned identifierNumber, const GetByIdStatus&amp; getByIdStatus)
&gt; 
&gt; This method looks like it duplicates a *ton* of code with handleGetById.  Please try to make them common.

Yeah, you are probably right. I will change it.

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:859
&gt;&gt; +    }
&gt; 
&gt; Are you sure about this?  Can&apos;t TryGetById call any arbitrary GetOwnPropertySlot?
&gt; 
&gt; I think that the more conservative thing to do for now is remove the def() and make this read(Heap).

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182349</commentid>
    <comment_count>7</comment_count>
      <attachid>276051</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-08 16:20:49 -0700</bug_when>
    <thetext>Created attachment 276051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182525</commentid>
    <comment_count>8</comment_count>
      <attachid>276051</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-09 20:38:43 -0700</bug_when>
    <thetext>Comment on attachment 276051
Patch

Clearing flags on attachment: 276051

Committed r199279: &lt;http://trac.webkit.org/changeset/199279&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182526</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-09 20:38:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220663</commentid>
    <comment_count>10</comment_count>
      <attachid>276051</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-16 16:59:17 -0700</bug_when>
    <thetext>Comment on attachment 276051
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3867
&gt; +            handleGetById(currentInstruction[1].u.operand, SpecHeapTop, base, identifierNumber, getByIdStatus, AccessType::GetPure);

You should be able to produce a type prediction here.

Filed: https://bugs.webkit.org/show_bug.cgi?id=160921

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:177
&gt; +            changed |= setPrediction(SpecBytecodeTop);

It&apos;s wrong to ever use any of the Top&apos;s in prediction propagation phase.  This tells the prediction propagator that this node will *definitely* return values of all types, which causes us to assume the worst for all downstream code.

Filed: https://bugs.webkit.org/show_bug.cgi?id=160921</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275959</attachid>
            <date>2016-04-07 16:49:00 -0700</date>
            <delta_ts>2016-04-08 14:28:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156378-20160407164903.patch</filename>
            <type>text/plain</type>
            <size>28016</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZjRmNWJlYzcxYTlhODYwMjJjZjczYTI1ZjcwMWNiMGIwM2UwZTQ4Li43YjIwY2YzNzMxNzE3ZDgw
YWFjYTRmODU0YTA1OGI4ZTY2MDRkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNi0wNC0wNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICB0cnlHZXRCeUlkIHNob3VsZCBiZSBzdXBwb3J0ZWQgYnkgdGhlIERG
Ry9GVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NjM3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0cnlHZXRCeUlkIGluIHRoZSBERkcvRlRMLiBJdCBh
ZGRzIGEgbmV3IERGRyBub2RlCisgICAgICAgIFRyeUdldEJ5SWQsIHdoaWNoIGFjdHMgc2ltaWxh
cmx5IHRvIHRoZSBub3JtYWwgR2V0QnlJZCBERkcgbm9kZS4gT25lIGtleQorICAgICAgICBkaWZm
ZXJlbmNlIGJldHdlZW4gR2V0QnlJZCBhbmQgVHJ5R2V0QnlJZCBpcyB0aGF0IGluIHRoZSBMTElu
dCBhbmQgQmFzZWxpbmUKKyAgICAgICAgd2UgZG8gbm90IHByb2ZpbGUgdGhlIHJlc3VsdCB0eXBl
LiBUaGlzIHByb2ZpbGluZyBpcyB1bm5lc3NhcnkgZm9yIHRoZSBjdXJyZW50CisgICAgICAgIHVz
ZSBjYXNlIG9mIHRyeUdldEJ5SWQsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIGEgc3RyaWN0IGVx
dWFsaXR5IGNvbXBhcmlzaW9uCisgICAgICAgIGFnYWluc3QgYSBzcGVjaWZpYyBvYmplY3Qgb3Ig
dW5kZWZpbmVkLiBJbiBlaXRoZXIgY2FzZSBvdGhlciBERkcgb3B0aW1pemF0aW9ucworICAgICAg
ICB3aWxsIG1ha2UgdGhpcyBlcXVhbGx5IGZhc3Qgd2l0aCBvciB3aXRob3V0IHRoZSBwcm9maWxp
bmcgaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAg
IChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVRyeUdldEJ5SWQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVs
KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJZGVudGlmaWVyKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
Ojpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdl
dEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisK
IDIwMTYtMDQtMDcgIEpvbiBEYXZpcyAgPGpvbmRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBX
ZWIgQW5pbWF0aW9ucyBBUEkgdG8gRmVhdHVyZSBTdGF0dXMgUGFnZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCmluZGV4IGE1NWQ1M2E4N2Rj
NzNiMGI4YjQxYTFmM2EwZmMxNWZkMWJhMzcxYjQuLjRkYzczODAxMWIyNTQ5NDlhMGUwYTFhZGFl
YzAwNjVhZjEzZmE5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQKICAgICAKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKICAgICAKLSAgICBpZiAoaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVu
Z3RoKSkKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29k
ZShvcF9nZXRfYXJyYXlfbGVuZ3RoKSB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBMTElu
dDo6Z2V0T3Bjb2RlKG9wX3RyeV9nZXRfYnlfaWQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAKICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJ
RCA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlSUQ7CkBAIC0yMTAsNyArMjEwLDggQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlv
biA9IG51bGxwdHI7CiAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50eXBlKCkpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkxvYWQ6IHsKKyAgICAgICAgICAgICAg
ICBjYXNlIEFjY2Vzc0Nhc2U6OkxvYWQ6CisgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNl
OjpHZXRHZXR0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyOiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggN2NhNmJiYzFkYjc3YTQyNDA0N2QzNmQ4MjdlZDc0Mzk2
OTIzMmE3YS4uZDZhMjc5ZjI4ZjAyZjFmY2VmYzVmZmYwNzQzMzhkODJlY2Q5YjI1MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaApAQCAtMTk2NCw3ICsxOTY0LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJM
aW1pCiAgICAgICAgIAogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgCisKKyAgICBjYXNlIFRyeUdldEJ5SWQ6CisgICAgICAgIGZvck5vZGUobm9k
ZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBHZXRCeUlk
OgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9kZS0+cHJlZGljdGlv
bigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDAwMThmNmY2Y2FlYjQxOGRmMzBlMjcwNzVhMDdkN2RkMGQ3ZjEzOGUuLmRkMmFj
OWJiYjc1YzUzYjZiOTBiNjExOTY2MGZlOWYzODljZThhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMzEsNyArMjMxLDggQEAg
cHJpdmF0ZToKICAgICBOb2RlKiBsb2FkKFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBjb25zdCBWYXJpYW50VHlwZSYpOwogCiAgICAgTm9kZSog
c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlh
bnQmLCBOb2RlKiB2YWx1ZSk7Ci0gICAgICAgIAorCisgICAgdm9pZCBoYW5kbGVUcnlHZXRCeUlk
KGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsIGNvbnN0IEdldEJ5SWRTdGF0dXMmKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAg
ICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeUlkU3RhdHVzKTsKICAgICB2b2lkIGVt
aXRQdXRCeUlkKApAQCAtMjg4NSw2ICsyODg2LDc3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpz
dG9yZShOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBQdXRCeUlkVmFyaWFu
CiAgICAgcmV0dXJuIGhhbmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQu
b2Zmc2V0KCksIHZhcmlhbnQucmVxdWlyZWRUeXBlKCksIHZhbHVlKTsKIH0KIAordm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlVHJ5R2V0QnlJZChpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBOb2Rl
KiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBn
ZXRCeUlkU3RhdHVzKQoreworICAgIEFTU0VSVCghZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkp
OworICAgIGlmICghZ2V0QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRCeUlkU3RhdHVzLm51
bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAorICAgICAgICAgICAgYWRk
VG9HcmFwaChUcnlHZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhTcGVj
Qnl0ZWNvZGVUb3ApLCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
Z2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgeworICAgICAgICBpZiAoIWlzRlRMKG1f
Z3JhcGgubV9wbGFuLm1vZGUpCisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBo
aWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRl
c3RpbmF0aW9uT3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUcnlHZXRCeUlk
LCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhTcGVjQnl0ZWNvZGVUb3ApLCBiYXNl
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8TXVs
dGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOworCisgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90
eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBt
YXliZSBub3QgYmUKKyAgICAgICAgLy8gICAgb3B0aW1hbCwgaWYgdGhlcmUgaXMgc29tZSByYXJl
bHkgZXhlY3V0ZWQgY2FzZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1aXJlcyBhIGxvdAorICAgICAg
ICAvLyAgICBvZiBjaGVja3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90IHdhdGNocG9pbnRhYmxl
LgorICAgICAgICBmb3IgKGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogZ2V0QnlJZFN0
YXR1cy52YXJpYW50cygpKSB7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5pbnRyaW5zaWMo
KSA9PSBOb0ludHJpbnNpYyk7CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50LmNvbmRpdGlvblNl
dCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChNdWx0aUdldEJ5
T2Zmc2V0Q2FzZSgKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwK
KyAgICAgICAgICAgICAgICAgICAgR2V0QnlPZmZzZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZz
ZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgR2V0QnlPZmZzZXRNZXRob2QgbWV0aG9kID0gcGxhbkxvYWQodmFyaWFudC5jb25k
aXRpb25TZXQoKSk7CisgICAgICAgICAgICBpZiAoIW1ldGhvZCkgeworICAgICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKKyAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChUcnlHZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9w
SW5mbyhTcGVjQnl0ZWNvZGVUb3ApLCBiYXNlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlcy5hcHBlbmQoTXVsdGlHZXRCeU9mZnNl
dENhc2UodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwgbWV0aG9kKSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21w
aWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgICAgIC8vIDIpIEVtaXQg
YSBNdWx0aUdldEJ5T2Zmc2V0CisgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0g
bV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5jYXNl
cyA9IGNhc2VzOworICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51
bWJlcjsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAor
ICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9w
SW5mbyhTcGVjQnl0ZWNvZGVUb3ApLCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdldEJ5
SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeUlkU3RhdHVzWzBdOworICAgIEFTU0VSVCghdmFyaWFu
dC5jYWxsTGlua1N0YXR1cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMp
OworCisgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKFNwZWNCeXRlY29kZVRvcCwgYmFzZSwg
aWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CisgICAgaWYgKCFsb2FkZWRWYWx1ZSkgeworICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCisgICAgICAgICAg
ICBhZGRUb0dyYXBoKFRyeUdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZv
KFNwZWNCeXRlY29kZVRvcCksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCisgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24o
KS0+bm90aWNlSW5saW5lZEdldEJ5SWQoKTsKKyAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3Rp
bmF0aW9uT3BlcmFuZCksIGxvYWRlZFZhbHVlKTsKK30KKworCiB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVHZXRCeUlkKAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCiAg
ICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzKQpAQCAtMjk5MSw4ICszMDYzLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmICh2YXJpYW50LmludHJpbnNpYygpICE9IE5vSW50cmluc2ljKQotICAgICAgICBB
U1NFUlQodmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYyk7CisgICAgQVNTRVJUKHZh
cmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOwogCiAgICAgLy8gTWFrZSBhIGNhbGwu
IFdlIGRvbid0IHRyeSB0byBnZXQgZmFuY3kgd2l0aCB1c2luZyB0aGUgc21hbGxlc3Qgb3BlcmFu
ZCBudW1iZXIgYmVjYXVzZQogICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hvdWxkIGNv
bXByZXNzIHRoZSBzdGFjayBhbnl3YXkuCkBAIC0zODQ3LDcgKzM5MTgsMjIgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfcHV0X2J5X3ZhbCk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAg
ICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1f
aWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAgICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVu
dGlmaWVyTnVtYmVyXTsKKworICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVz
ID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAorICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKKyAgICAgICAg
ICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOworCisgICAgICAgICAgICBoYW5kbGVU
cnlHZXRCeUlkKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGJhc2UsIGlkZW50aWZp
ZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90
cnlfZ2V0X2J5X2lkKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgog
ICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6IHsKICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYTIyYjYzOTRlZDg3NWRjZGZhNGY2
ZTkwOTMyZDUyZmNiMzQyYjdjNC4uNmJmMzM0ZmM3MzUwMDNkYzg2MzI0YzEzMDg5NWRlNjBkYjg2
MWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMTUyLDYgKzE1Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bj
b2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBv
cF9nZXRfYnlfdmFsOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9i
eV92YWxfZGlyZWN0OgorICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAgICBjYXNlIG9wX2dl
dF9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDk0
MzRhNzZhNzdlZDRkNGI2ODRkYzJhNzRjMGYzYzY3ZDZkOTVjNGMuLmUzZDQ4MjhmYWYxN2M2OTJh
MzE2ZWNjNDA1OTBhMGVlNWQ2NjYzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC04NDgsNyArODQ4LDE2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1
CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+
Y2hpbGQyKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
ICAgIAorCisgICAgY2FzZSBUcnlHZXRCeUlkOiB7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVj
dHVyZUlEKTsKKyAgICAgICAgcmVhZChKU09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICBBYnN0
cmFjdEhlYXAgaGVhcChOYW1lZFByb3BlcnRpZXMsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7
CisgICAgICAgIHJlYWQoaGVhcCk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9w
ZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6IHsKICAgICAgICAg
cmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZs
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDBjYjI3ZGFl
OGE1ZmYzYTFjMGMyNTY0NDI3NzVhMTY2ZDliNmQ4MS4uMjk0MWZmM2Q4NDA3MjNkODU3MzkxMTIx
MTg5NTMyMzRlMmU4NGJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cApAQCAtOTYsNiArOTYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBBcml0aENvczoKICAgICBjYXNlIEFyaXRoTG9nOgogICAgIGNhc2UgVmFsdWVB
ZGQ6CisgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdl
dEJ5SWRGbHVzaDoKICAgICBjYXNlIFB1dEJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAyMjAxYWE0MmY5YjU4Nzg4ZTA4YjE5NDkyYzliYzk0
YzNiMDM1ZmY2Li5mMWI2MjlhZWQwMTIwYTkxYzk2MDZmMWEyNDE2ZjZkMzBjNTVlMWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEwNjksNiAr
MTA2OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIFRyeUdldEJ5SWQ6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAg
ICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFz
ZWQgb24gcmVhZGluZyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggZDIy
MDY3YTk0NGNmNTEyMjAwYTYzMjA5Yjc1NWU2ZWQ0ZmY2NGYzNC4uNGUzNzJlYWRjMzc0NTg4MzVk
NWY5OTMxNjQxZjMzNTFkOTA4ZTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
QEAgLTg2Niw2ICs4NjYsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgYm9vbCBoYXNJZGVudGlmaWVy
KCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFRyeUdldEJ5
SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAppbmRleCBlYzZiNmUxMzZmYzI5YWM2ZTIwYjg0NGIyN2E4ZDEwZGRmNGYxNDVhLi5lOGJjNTA2
MzBjNmYzMzM5YWQxZTBkMDYyMmRkYTAwM2Q3ZDM2MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xODIsNiArMTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKaW5kZXggYjQ5ODgzNzMyNDk5ZmJmMjBhZjc0ODUzNzI5NWRjNmMyZGQ4
NWZhYS4uZjJjNTg5Y2MzMTY1MjhkYjU3MjA5ZjU3NTI5Mjk5ZTk1NTE2MTkyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKQEAgLTE3Miw3ICsxNzIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDogewor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAg
ICAgICAgIGNhc2UgQXJyYXlQdXNoOgogICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDUyYmRjZmU1ZTg4
MDY3N2Y0ZjkwM2QwOWFiM2I4NWZjZjllMjZiNDYuLjc0MDBiOWFlN2JhZjhiMjM3ODlkYjQwMGQ5
YThmOWI4MmMxNTk2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC0xOTEsNiArMTkxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJp
dGhDb3M6CiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNlIFZhbHVlQWRkOgorICAgIGNhc2Ug
VHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAg
ICAgY2FzZSBQdXRCeUlkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCA3YjI5N2Y1NDE1NGY0MTM1ZjMzNjRkZjNhMWIwZGQ1ZDE4ZjE0
ZGRiLi45M2JlMTA1MTkxMmQwZTlmZjlkNmViOGM4ODA5OWQwYjk2Njc5YWM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtOTY0LDYg
Kzk2NCw0NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp1c2VDaGlsZHJlbihOb2RlKiBub2RlKQog
ICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQoTm9kZSog
bm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
YmFzZSk7CisKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGJhc2UudXNlKCk7CisK
KyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJl
c3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBE
b250U3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAg
ICAgICBiYXNlLnVzZSgpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworCisgICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5v
ZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBBY2Nlc3NUeXBlOjpH
ZXRQdXJlKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hp
bGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgdXNlIGtp
bmQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfSAKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKaW5kZXggODQwOWY2NWZlY2IzN2JmYjM3MmNlNjZhZWYwOTU3Nzk0OGI1
MzJhMS4uOWUxMWFhOGM0MTdkYTdhMzY2YmFlNGVmNDg4MjRkYjZhODIyNzVhYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtNzA0LDEzICs3
MDQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZU1vdkhpbnRBbmRDaGVjayhOb2RlKik7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVt
cCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9
IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsLCBB
Y2Nlc3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0KTsKICAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2UsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVl
ZFRvU3BpbGwpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkIGNhY2hlZEdldEJ5
SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9h
ZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0g
SklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwog
ICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIs
IEdQUlJlZyB2YWx1ZVRhZ0dQUiwgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiwgR1BSUmVnIHNjcmF0
Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNN
b2RlID0gTmVlZFRvU3BpbGwpOwogI2VuZGlmCi0gICAgCisKKyAgICB2b2lkIGNvbXBpbGVUcnlH
ZXRCeUlkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJbihOb2RlKik7CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlQmFzZVZhbHVlU3RvcmVCYXJyaWVyKEVkZ2UmIGJhc2VFZGdlLCBFZGdlJiB2YWx1
ZUVkZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKaW5kZXggMGRmNGEzMDNiYTYwNjNmYTQ3ZDk3NjI1MzhhMWVlMzkyZjIwMWViZC4u
OWU2ZjI3N2U1NWEzZDEyM2VmOTYxOGI5MDAyZWFiZjQzYzdiMjc2NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNTMsNyAr
MTUzLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAg
ICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJl
Z2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BS
LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRh
cmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewog
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVy
YXRlRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0t
PnNpemUoKSk7CiAgICAgUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdp
c3RlcnMoKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAg
IH0KICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyhiYXNl
R1BSKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgQWNjZXNzVHlwZTo6R2V0KTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0R1BSKSwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgobV9qaXQpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgCiAgICAgYXV0byBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsCisgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgdHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgPyBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUgOiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VHUFIsCiAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51
bWJlciksIHNwaWxsTW9kZSk7CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKQEAgLTQwMTksNiArNDAxOSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CisKKyAgICBjYXNlIFRyeUdldEJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZVRyeUdl
dEJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZDog
ewogICAgICAgICBBU1NFUlQobm9kZS0+cHJlZGljdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDMxZWRmYjZkZWNjNzA1ZGY4
MGE0YTYwYmIyNWQxYjUwNDkzOWRiNjIuLjFjOTFjZjRjNWM5N2FiMjE1N2UyYTY4NDc5MzUyOTc0
Y2ZhYTIxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKQEAgLTE2Niw2ICsxNjYsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICBjYXNl
IE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKKyAgICBjYXNlIFRyeUdldEJ5
SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2Ug
VG9UaGlzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDYwZGFhN2I2MDM2MTNiOTI0MjkxZDZjMGNlNGVjMzIzMGJkNzE4NGQuLjRiZTI2ZWQx
MWMzOWJiZjYzNDg3MGY1NmVmYTYzNDgwODEyNjgzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTU5Myw5ICs1OTMsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlUHV0U3Ry
dWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgor
ICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRG
bHVzaDoKLSAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKCk7CisgICAgICAgICAgICBjb21waWxl
R2V0QnlJZChBY2Nlc3NUeXBlOjpHZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgSW46CiAgICAgICAgICAgICBjb21waWxlSW4oKTsKQEAgLTIzMDIsMTEgKzIzMDUsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBjb21waWxlR2V0QnlJZCgpCisgICAgdm9pZCBjb21waWxl
R2V0QnlJZChBY2Nlc3NUeXBlIHR5cGUpCiAgICAgeworICAgICAgICBBU1NFUlQodHlwZSA9PSBB
Y2Nlc3NUeXBlOjpHZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKICAgICAgICAg
c3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIENlbGxV
c2U6IHsKLSAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKGdldEJ5SWQobG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgdHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTIzMjQsMTIgKzIzMjgsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY2Vs
bENhc2UpLCB1bnN1cmUobm90Q2VsbENhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSwgbm90Q2VsbENh
c2UpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hv
cihnZXRCeUlkKHZhbHVlKSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGdldEJ5SWQodmFsdWUsIHR5cGUpKTsKICAgICAgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICBKX0pJVE9w
ZXJhdGlvbl9FSkkgZ2V0QnlJZEZ1bmN0aW9uOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQWNj
ZXNzVHlwZTo6R2V0KQorICAgICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlv
bkdldEJ5SWRHZW5lcmljOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGdldEJ5
SWRGdW5jdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljOworCiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAg
ICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZEdl
bmVyaWMpLAorICAgICAgICAgICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24oZ2V0
QnlJZEZ1bmN0aW9uKSwKICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgdmFsdWUsCiAgICAg
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKQEAgLTcyOTMsNyArNzMwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBt
X291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKICAg
ICB9CiAgICAgCi0gICAgTFZhbHVlIGdldEJ5SWQoTFZhbHVlIGJhc2UpCisgICAgTFZhbHVlIGdl
dEJ5SWQoTFZhbHVlIGJhc2UsIEFjY2Vzc1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX25vZGU7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBo
LmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKQEAgLTczMzEsNyArNzM0
MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklU
R2V0QnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVC
bG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhwYXJh
bXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0u
Z3ByKCkpLCBBY2Nlc3NUeXBlOjpHZXQpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhwYXJhbXNbMF0uZ3ByKCkpLCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+
Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFi
ZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpAQCAtNzM0MCwxMSArNzM1MCwxNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAKKyAgICAgICAgICAgICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBv
cHRpbWl6YXRpb25GdW5jdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09
IEFjY2Vzc1R5cGU6OkdldCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRp
b25GdW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25GdW5j
dGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKwogICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhD
YWxsID0gY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUs
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBd
LmdwcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCkpLmNh
bGwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZq
aXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXgg
ZWM3M2MxYzM2YTgxMjg3YTYxOGRkZGI0ZmNiZjcyYzA0YjZlYmNiYS4uNjYxZjk1MWZhMzhkZjM2
Zjk2MTI3NDk1YjdkMjcxNTI1Zjg2YmY1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNzAsNiArMTcwLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7
CiB9CiAKKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlk
R2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElk
ZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2VWYWx1
ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA4ZTgyYjNiOTA3NWQwYWYzNzBl
N2VlNTY5ZGRmM2M5NTdjMTQxZTkzLi5jNjNiMTlkNTBhOGJlNjIwOTdlZWQ1Y2UxYTIwYzBiZjZh
YTkwNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAt
Mjg4LDYgKzI4OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd091dE9mQm91
bmRzQWNjZXNzRXJyb3IoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMCiBpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwog
aW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0
YXRlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVk
U3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276043</attachid>
            <date>2016-04-08 14:28:51 -0700</date>
            <delta_ts>2016-04-08 16:20:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156378-20160408142854.patch</filename>
            <type>text/plain</type>
            <size>41713</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjYyNThmNDhhZDQ4ZmVjOGJjN2I0MTgxOTEwY2Y2ODM4M2QyYzYzLi4wZTQ2YTk4ZTcxMmJjNjlh
MTM0ZDZiOTY1MGZlMmUxYTcwZGYxOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNi0wNC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICB0cnlHZXRCeUlkIHNob3VsZCBiZSBzdXBwb3J0ZWQgYnkgdGhlIERG
Ry9GVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NjM3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0cnlHZXRCeUlkIGluIHRoZSBERkcvRlRMLiBJdCBh
ZGRzIGEgbmV3IERGRyBub2RlCisgICAgICAgIFRyeUdldEJ5SWQsIHdoaWNoIGFjdHMgc2ltaWxh
cmx5IHRvIHRoZSBub3JtYWwgR2V0QnlJZCBERkcgbm9kZS4gT25lIGtleQorICAgICAgICBkaWZm
ZXJlbmNlIGJldHdlZW4gR2V0QnlJZCBhbmQgVHJ5R2V0QnlJZCBpcyB0aGF0IGluIHRoZSBMTElu
dCBhbmQgQmFzZWxpbmUKKyAgICAgICAgd2UgZG8gbm90IHByb2ZpbGUgdGhlIHJlc3VsdCB0eXBl
LiBUaGlzIHByb2ZpbGluZyBpcyB1bm5lc3NhcnkgZm9yIHRoZSBjdXJyZW50CisgICAgICAgIHVz
ZSBjYXNlIG9mIHRyeUdldEJ5SWQsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIGEgc3RyaWN0IGVx
dWFsaXR5IGNvbXBhcmlzaW9uCisgICAgICAgIGFnYWluc3QgYSBzcGVjaWZpYyBvYmplY3Qgb3Ig
dW5kZWZpbmVkLiBJbiBlaXRoZXIgY2FzZSBvdGhlciBERkcgb3B0aW1pemF0aW9ucworICAgICAg
ICB3aWxsIG1ha2UgdGhpcyBlcXVhbGx5IGZhc3Qgd2l0aCBvciB3aXRob3V0IHRoZSBwcm9maWxp
bmcgaW5mb3JtYXRpb24uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGFkZHMg
bmV3IHJldXNlIG1vZGVzIGZvciBKU1ZhbHVlUmVnc1RlbXBvcmFyeSB0aGF0IHRha2UKKyAgICAg
ICAgYW4gb3BlcmFuZCBhbmQgYXR0ZW1wdCB0byByZXVzZSB0aGUgcmVnaXN0ZXJzIGZvciB0aGF0
IG9wZXJhbmQgaWYgdGhleSBhcmUgZnJlZQorICAgICAgICBhZnRlciB0aGUgY3VycmVudCBERkcg
bm9kZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVHJ5R2V0QnlJZCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAg
ICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6
CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dD
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0
ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OkpTVmFsdWVSZWdzVGVtcG9y
YXJ5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHUFJUZW1wb3Jhcnk6Om9wZXJhdG9yPSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlk
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdHJ5LWdldC1ieS1pZC5qczoKKyAg
ICAgICAgKHRyeUdldEJ5SWRUZXh0U3RyaWN0KToKKyAgICAgICAgKGdldCBsZXQpOgorICAgICAg
ICAobGV0LmdldCBjcmVhdGVCdWlsdGluKToKKyAgICAgICAgKGdldCB0aHJvdyk6CisgICAgICAg
IChnZXRDYWxsZXIub2JqLjEudGhyb3cubmV3LkVycm9yKTogRGVsZXRlZC4KKwogMjAxNi0wNC0w
NyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFByb2ZpbGVWaWV3IHNvdXJjZSBsaW5rcyBhcmUgb2ZmIGJ5IDEgbGluZSwgd29y
c2UgaW4gcHJldHR5IHByaW50ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCmluZGV4IGE1NWQ1M2E4N2RjNzNiMGI4YjQxYTFmM2Ew
ZmMxNWZkMWJhMzcxYjQuLjRkYzczODAxMWIyNTQ5NDlhMGUwYTFhZGFlYzAwNjVhZjEzZmE5ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQKICAgICAKICAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKICAgICAKLSAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVuZ3RoKSkKKyAgICBpZiAo
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gTExJbnQ6OmdldE9wY29kZShvcF9nZXRfYXJyYXlf
bGVuZ3RoKSB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKG9w
X3RyeV9nZXRfYnlfaWQpKQogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBmYWxzZSk7CiAKICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlSUQ7CkBAIC0yMTAsNyArMjEwLDggQEAgR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAg
ICAgICAgICAgICAgICBKU0Z1bmN0aW9uKiBpbnRyaW5zaWNGdW5jdGlvbiA9IG51bGxwdHI7CiAK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50eXBlKCkpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIEFjY2Vzc0Nhc2U6OkxvYWQ6IHsKKyAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nh
c2U6OkxvYWQ6CisgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpHZXRHZXR0ZXI6IHsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6SW50cmluc2ljR2V0dGVyOiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKaW5kZXggN2NhNmJiYzFkYjc3YTQyNDA0N2QzNmQ4MjdlZDc0Mzk2OTIzMmE3YS4uZDZhMjc5
ZjI4ZjAyZjFmY2VmYzVmZmYwNzQzMzhkODJlY2Q5YjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApA
QCAtMTk2NCw3ICsxOTY0LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIAog
ICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisK
KyAgICBjYXNlIFRyeUdldEJ5SWQ6CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2Rl
VG9wKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0
QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9kZS0+cHJlZGljdGlvbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDAwMThm
NmY2Y2FlYjQxOGRmMzBlMjcwNzVhMDdkN2RkMGQ3ZjEzOGUuLmRkMmFjOWJiYjc1YzUzYjZiOTBi
NjExOTY2MGZlOWYzODljZThhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0yMzEsNyArMjMxLDggQEAgcHJpdmF0ZToKICAgICBO
b2RlKiBsb2FkKFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyLCBjb25zdCBWYXJpYW50VHlwZSYpOwogCiAgICAgTm9kZSogc3RvcmUoTm9kZSogYmFz
ZSwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlhbnQmLCBOb2RlKiB2YWx1
ZSk7Ci0gICAgICAgIAorCisgICAgdm9pZCBoYW5kbGVUcnlHZXRCeUlkKGludCBkZXN0aW5hdGlv
bk9wZXJhbmQsIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIGNvbnN0IEdl
dEJ5SWRTdGF0dXMmKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0
aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBOb2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBHZXRCeUlkU3RhdHVzKTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKApAQCAt
Mjg4NSw2ICsyODg2LDc3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpzdG9yZShOb2RlKiBiYXNl
LCB1bnNpZ25lZCBpZGVudGlmaWVyLCBjb25zdCBQdXRCeUlkVmFyaWFuCiAgICAgcmV0dXJuIGhh
bmRsZVB1dEJ5T2Zmc2V0KGJhc2UsIGlkZW50aWZpZXIsIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlh
bnQucmVxdWlyZWRUeXBlKCksIHZhbHVlKTsKIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlVHJ5R2V0QnlJZChpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBOb2RlKiBiYXNlLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBnZXRCeUlkU3RhdHVzKQor
eworICAgIEFTU0VSVCghZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkpOworICAgIGlmICghZ2V0
QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgfHwg
IU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAorICAgICAgICAgICAgYWRkVG9HcmFwaChUcnlHZXRC
eUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhTcGVjQnl0ZWNvZGVUb3ApLCBi
YXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZ2V0QnlJZFN0YXR1cy5u
dW1WYXJpYW50cygpID4gMSkgeworICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpCisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
ZygpKSB7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFu
ZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUcnlHZXRCeUlkLCBPcEluZm8oaWRlbnRp
Zmllck51bWJlciksIE9wSW5mbyhTcGVjQnl0ZWNvZGVUb3ApLCBiYXNlKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENh
c2UsIDI+IGNhc2VzOworCisgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBj
aGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBtYXliZSBub3QgYmUKKyAg
ICAgICAgLy8gICAgb3B0aW1hbCwgaWYgdGhlcmUgaXMgc29tZSByYXJlbHkgZXhlY3V0ZWQgY2Fz
ZSBpbiB0aGUgY2hhaW4gdGhhdCByZXF1aXJlcyBhIGxvdAorICAgICAgICAvLyAgICBvZiBjaGVj
a3MgYW5kIHRob3NlIGNoZWNrcyBhcmUgbm90IHdhdGNocG9pbnRhYmxlLgorICAgICAgICBmb3Ig
KGNvbnN0IEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogZ2V0QnlJZFN0YXR1cy52YXJpYW50cygp
KSB7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNp
Yyk7CisKKyAgICAgICAgICAgIGlmICh2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgKKyAg
ICAgICAgICAgICAgICAgICAgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwKKyAgICAgICAgICAgICAg
ICAgICAgR2V0QnlPZmZzZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgR2V0QnlP
ZmZzZXRNZXRob2QgbWV0aG9kID0gcGxhbkxvYWQodmFyaWFudC5jb25kaXRpb25TZXQoKSk7Cisg
ICAgICAgICAgICBpZiAoIW1ldGhvZCkgeworICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKKyAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChUcnlHZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhTcGVjQnl0ZWNv
ZGVUb3ApLCBiYXNlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlcy5hcHBlbmQoTXVsdGlHZXRCeU9mZnNldENhc2UodmFyaWFudC5z
dHJ1Y3R1cmVTZXQoKSwgbWV0aG9kKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9ncmFw
aC5jb21waWxhdGlvbigpKQorICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3Rp
Y2VJbmxpbmVkR2V0QnlJZCgpOworCisgICAgICAgIC8vIDIpIEVtaXQgYSBNdWx0aUdldEJ5T2Zm
c2V0CisgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRp
R2V0QnlPZmZzZXREYXRhLmFkZCgpOworICAgICAgICBkYXRhLT5jYXNlcyA9IGNhc2VzOworICAg
ICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAorICAgICAgICAgICAgYWRk
VG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhTcGVjQnl0ZWNv
ZGVUb3ApLCBiYXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoZ2V0
QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOworICAgIEdldEJ5SWRWYXJpYW50IHZhcmlh
bnQgPSBnZXRCeUlkU3RhdHVzWzBdOworICAgIEFTU0VSVCghdmFyaWFudC5jYWxsTGlua1N0YXR1
cygpICYmIHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOworCisgICAgTm9kZSog
bG9hZGVkVmFsdWUgPSBsb2FkKFNwZWNCeXRlY29kZVRvcCwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFyaWFudCk7CisgICAgaWYgKCFsb2FkZWRWYWx1ZSkgeworICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCisgICAgICAgICAgICBhZGRUb0dyYXBoKFRy
eUdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKFNwZWNCeXRlY29kZVRv
cCksIGJhc2UpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2dyYXBoLmNv
bXBpbGF0aW9uKCkpCisgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5l
ZEdldEJ5SWQoKTsKKyAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCks
IGxvYWRlZFZhbHVlKTsKK30KKworCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCiAgICAgR2V0QnlJZFN0YXR1
cyBnZXRCeUlkU3RhdHVzKQpAQCAtMjk5MSw4ICszMDYzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh2YXJp
YW50LmludHJpbnNpYygpICE9IE5vSW50cmluc2ljKQotICAgICAgICBBU1NFUlQodmFyaWFudC5p
bnRyaW5zaWMoKSA9PSBOb0ludHJpbnNpYyk7CisgICAgQVNTRVJUKHZhcmlhbnQuaW50cmluc2lj
KCkgPT0gTm9JbnRyaW5zaWMpOwogCiAgICAgLy8gTWFrZSBhIGNhbGwuIFdlIGRvbid0IHRyeSB0
byBnZXQgZmFuY3kgd2l0aCB1c2luZyB0aGUgc21hbGxlc3Qgb3BlcmFuZCBudW1iZXIgYmVjYXVz
ZQogICAgIC8vIHRoZSBzdGFjayBsYXlvdXQgcGhhc2Ugc2hvdWxkIGNvbXByZXNzIHRoZSBzdGFj
ayBhbnl3YXkuCkBAIC0zODQ3LDcgKzM5MTgsMjIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0
X2J5X3ZhbCk7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCisgICAgICAgIGNhc2Ugb3BfdHJ5
X2dldF9ieV9pZDogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFw
W2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmRdOworICAgICAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsK
KworICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBjdXJyZW50
Q29kZU9yaWdpbigpLCB1aWQpOworCisgICAgICAgICAgICBoYW5kbGVUcnlHZXRCeUlkKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5
SWRTdGF0dXMpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90cnlfZ2V0X2J5X2lkKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9w
X2dldF9hcnJheV9sZW5ndGg6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24gPSBnZXRQcmVkaWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKaW5kZXggYTIyYjYzOTRlZDg3NWRjZGZhNGY2ZTkwOTMyZDUyZmNiMzQy
YjdjNC4uNmJmMzM0ZmM3MzUwMDNkYzg2MzI0YzEzMDg5NWRlNjBkYjg2MWY4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTUyLDYgKzE1
Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQs
IENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgog
ICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0Ogor
ICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBj
YXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDk0MzRhNzZhNzdlZDRkNGI2
ODRkYzJhNzRjMGYzYzY3ZDZkOTVjNGMuLmUzZDQ4MjhmYWYxN2M2OTJhMzE2ZWNjNDA1OTBhMGVl
NWQ2NjYzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBA
IC04NDgsNyArODQ4LDE2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihI
ZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9kZS0+Y2hpbGQyKCkpLCBMYXp5
Tm9kZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgICAgIAorCisgICAgY2Fz
ZSBUcnlHZXRCeUlkOiB7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAg
ICAgcmVhZChKU09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICBBYnN0cmFjdEhlYXAgaGVhcChO
YW1lZFByb3BlcnRpZXMsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgICAgIHJlYWQo
aGVhcCk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwg
bm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6IHsKICAgICAgICAgcmVhZChKU0NlbGxfc3Ry
dWN0dXJlSUQpOwogICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDBjYjI3ZGFlOGE1ZmYzYTFjMGMyNTY0
NDI3NzVhMTY2ZDliNmQ4MS4uMjk0MWZmM2Q4NDA3MjNkODU3MzkxMTIxMTg5NTMyMzRlMmU4NGJm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtOTYsNiArOTYs
NyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0
aENvczoKICAgICBjYXNlIEFyaXRoTG9nOgogICAgIGNhc2UgVmFsdWVBZGQ6CisgICAgY2FzZSBU
cnlHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAg
ICBjYXNlIFB1dEJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCAyMjAxYWE0MmY5YjU4Nzg4ZTA4YjE5NDkyYzliYzk0YzNiMDM1ZmY2Li5mMWI2
MjlhZWQwMTIwYTkxYzk2MDZmMWEyNDE2ZjZkMzBjNTVlMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTEwNjksNiArMTA2OSwxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFRyeUdl
dEJ5SWQ6IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
Q2VsbCgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEdldEJ5SWQ6
CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggZDIyMDY3YTk0NGNmNTEyMjAw
YTYzMjA5Yjc1NWU2ZWQ0ZmY2NGYzNC4uNGUzNzJlYWRjMzc0NTg4MzVkNWY5OTMxNjQxZjMzNTFk
OTA4ZTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTg2Niw2ICs4NjYs
NyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgYm9vbCBoYXNJZGVudGlmaWVyKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNh
c2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgUHV0
QnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlYzZiNmUx
MzZmYzI5YWM2ZTIwYjg0NGIyN2E4ZDEwZGRmNGYxNDVhLi5lOGJjNTA2MzBjNmYzMzM5YWQxZTBk
MDYyMmRkYTAwM2Q3ZDM2MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCkBAIC0xODIsNiArMTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFB1dEJ5VmFsRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFy
Z3MpIFwKICAgICBtYWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCiAgICAgbWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVI
YXNWYXJBcmdzKSBcCisgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFB1dEJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggYjQ5ODgzNzMyNDk5ZmJmMjBhZjc0ODUzNzI5NWRjNmMyZGQ4NWZhYS4uZjJjNTg5Y2Mz
MTY1MjhkYjU3MjA5ZjU3NTI5Mjk5ZTk1NTE2MTkyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTE3Miw3ICsxNzIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0
UHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgICAgIAorCisgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDogeworICAgICAgICAgICAgY2hh
bmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIGNhc2UgQXJy
YXlQdXNoOgogICAgICAgICBjYXNlIFJlZ0V4cEV4ZWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDUyYmRjZmU1ZTg4MDY3N2Y0ZjkwM2QwOWFi
M2I4NWZjZjllMjZiNDYuLjc0MDBiOWFlN2JhZjhiMjM3ODlkYjQwMGQ5YThmOWI4MmMxNTk2ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0x
OTEsNiArMTkxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0
ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2Fz
ZSBBcml0aExvZzoKICAgICBjYXNlIFZhbHVlQWRkOgorICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAg
ICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApp
bmRleCA3YjI5N2Y1NDE1NGY0MTM1ZjMzNjRkZjNhMWIwZGQ1ZDE4ZjE0ZGRiLi4xMGQ3YzUyOTc3
Y2RkYTRmNGZmNDM3NzdlNTNjYmNhOGRmYzc1ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtOTY0LDYgKzk2NCw0NyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjp1c2VDaGlsZHJlbihOb2RlKiBub2RlKQogICAgIH0KIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQoTm9kZSogbm9kZSkKK3sKKyAgICBz
d2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNhc2UgQ2VsbFVzZTogewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
KworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlLmdwcigpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7CisKKyAgICAgICAgYmFzZS51c2UoKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgRG9udFNwaWxsLCBBY2Nlc3NUeXBlOjpH
ZXRQdXJlKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFG
b3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSBy
ZXN1bHQodGhpcywgUmV1c2UsIGJhc2UpOworCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdz
ID0gYmFzZS5qc1ZhbHVlUmVncygpOworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKKworICAgICAgICBiYXNlLnVzZSgpOworCisgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOworCisg
ICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVz
dWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwsIEFj
Y2Vzc1R5cGU6OkdldFB1cmUpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBERkdfQ1JBU0gobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICBicmVhazsKKyAgICB9IAor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSogbm9kZSkKIHsKICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKQEAgLTExNjgs
NiArMTIwOSw0NCBAQCBKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3Jhcnko
U3BlY3VsYXRpdmVKSVQqIGppdCkKIHsKIH0KIAorI2lmIFVTRShKU1ZBTFVFNjQpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5
KFNwZWN1bGF0aXZlSklUKiBqaXQsIFJldXNlVGFnLCBUJiBvcGVyYW5kLCBXaGljaFZhbHVlV29y
ZCkKKyAgICA6IG1fZ3ByKGppdCwgUmV1c2UsIG9wZXJhbmQpCit7Cit9CisjZWxzZQordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK0pTVmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFy
eShTcGVjdWxhdGl2ZUpJVCogaml0LCBSZXVzZVRhZywgVCYgb3BlcmFuZCwgV2hpY2hWYWx1ZVdv
cmQgcmVzdWx0V29yZCkKK3sKKyAgICBpZiAocmVzdWx0V29yZCA9PSBQYXlsb2FkV29yZCkgewor
ICAgICAgICBtX3BheWxvYWRHUFIgPSBHUFJUZW1wb3Jhcnkoaml0LCBSZXVzZSwgb3BlcmFuZCk7
CisgICAgICAgIG1fdGFnR1BSID0gR1BSVGVtcG9yYXJ5KGppdCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9wYXlsb2FkR1BSID0gR1BSVGVtcG9yYXJ5KGppdCk7CisgICAgICAgIG1fdGFnR1BS
ID0gR1BSVGVtcG9yYXJ5KGppdCwgUmV1c2UsIG9wZXJhbmQpOworICAgIH0KK30KKyNlbmRpZgor
CisjaWYgVVNFKEpTVkFMVUU2NCkKK0pTVmFsdWVSZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1Rl
bXBvcmFyeShTcGVjdWxhdGl2ZUpJVCogaml0LCBSZXVzZVRhZywgSlNWYWx1ZU9wZXJhbmQmIG9w
ZXJhbmQpCit7CisgICAgbV9ncHIgPSBHUFJUZW1wb3Jhcnkoaml0LCBSZXVzZSwgb3BlcmFuZCk7
Cit9CisjZWxzZQorSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5KFNw
ZWN1bGF0aXZlSklUKiBqaXQsIFJldXNlVGFnLCBKU1ZhbHVlT3BlcmFuZCYgb3BlcmFuZCkKK3sK
KyAgICBpZiAoaml0LT5jYW5SZXVzZShvcGVyYW5kLm5vZGUoKSkpIHsKKyAgICAgICAgbV9wYXls
b2FkR1BSID0gR1BSVGVtcG9yYXJ5KGppdCwgUmV1c2UsIG9wZXJhbmQsIFBheWxvYWRXb3JkKTsK
KyAgICAgICAgbV90YWdHUFIgPSBHUFJUZW1wb3Jhcnkoaml0LCBSZXVzZSwgb3BlcmFuZCwgVGFn
V29yZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9wYXlsb2FkR1BSID0gR1BSVGVtcG9yYXJ5
KGppdCk7CisgICAgICAgIG1fdGFnR1BSID0gR1BSVGVtcG9yYXJ5KGppdCk7CisgICAgfQorfQor
I2VuZGlmCisKIEpTVmFsdWVSZWdzVGVtcG9yYXJ5Ojp+SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKSB7
IH0KIAogSlNWYWx1ZVJlZ3MgSlNWYWx1ZVJlZ3NUZW1wb3Jhcnk6OnJlZ3MoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDg0MDlmNjVmZWNi
MzdiZmIzNzJjZTY2YWVmMDk1Nzc5NDhiNTMyYTEuLjczOGJlMWM2ZmUzZTg0NjI3MTAyYWEzYTlk
NWJkMDRhMWJmZDE4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTcwMywxNCArNzAzLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVNb3ZIaW50KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNb3ZIaW50QW5kQ2hlY2soTm9kZSop
OwogCisgICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lz
dGVyc01vZGUgPSBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZSA9IEFjY2Vzc1R5cGU6OkdldCk7CisK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgp
LCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCk7CisgICAgdm9pZCBjYWNoZWRHZXRC
eUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJ
VENvbXBpbGVyOjpKdW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlID0gQWNjZXNzVHlwZTo6R2V0KTsKICAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoQ29kZU9y
aWdpbiwgR1BSUmVnIGJhc2UsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2ln
bmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
VGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRv
U3BpbGwpOwogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICB2b2lkIGNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQ
UiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklU
Q29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOworICAg
IHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcgYmFzZVRhZ0dQUk9yTm9uZSwg
R1BSUmVnIGJhc2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUg
PSBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZSA9IEFjY2Vzc1R5cGU6OkdldCk7CiAgICAgdm9pZCBj
YWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwgR1BSUmVnIHZh
bHVlVGFnR1BSLCBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1Bh
dGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGlsbFJlZ2lzdGVyc01vZGUgPSBOZWVk
VG9TcGlsbCk7CiAjZW5kaWYKLSAgICAKKworICAgIHZvaWQgY29tcGlsZVRyeUdldEJ5SWQoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUluKE5vZGUqKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVC
YXNlVmFsdWVTdG9yZUJhcnJpZXIoRWRnZSYgYmFzZUVkZ2UsIEVkZ2UmIHZhbHVlRWRnZSk7CkBA
IC0yOTQwLDYgKzI5NDMsMTcgQEAgcHVibGljOgogICAgIEdQUlRlbXBvcmFyeShTcGVjdWxhdGl2
ZUpJVCosIFJldXNlVGFnLCBKU1ZhbHVlT3BlcmFuZCYsIFdoaWNoVmFsdWVXb3JkKTsKICNlbmRp
ZgogCisgICAgR1BSVGVtcG9yYXJ5KEdQUlRlbXBvcmFyeSYgb3RoZXIpID0gZGVsZXRlOworCisg
ICAgR1BSVGVtcG9yYXJ5JiBvcGVyYXRvcj0oR1BSVGVtcG9yYXJ5JiYgb3RoZXIpCisgICAgewor
ICAgICAgICBBU1NFUlQoIW1faml0KTsKKyAgICAgICAgQVNTRVJUKG1fZ3ByID09IEludmFsaWRH
UFJSZWcpOworICAgICAgICBzdGQ6OnN3YXAobV9qaXQsIG90aGVyLm1faml0KTsKKyAgICAgICAg
c3RkOjpzd2FwKG1fZ3ByLCBvdGhlci5tX2dwcik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKICAgICB2b2lkIGFkb3B0KEdQUlRlbXBvcmFyeSYpOwogCiAgICAgfkdQUlRlbXBvcmFy
eSgpCkBAIC0yOTYyLDYgKzI5NzYsOSBAQCBjbGFzcyBKU1ZhbHVlUmVnc1RlbXBvcmFyeSB7CiBw
dWJsaWM6CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoKTsKICAgICBKU1ZhbHVlUmVnc1RlbXBv
cmFyeShTcGVjdWxhdGl2ZUpJVCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgSlNW
YWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqLCBSZXVzZVRhZywgVCYgb3BlcmFuZCwg
V2hpY2hWYWx1ZVdvcmQgcmVzdWx0UmVnV29yZCA9IFBheWxvYWRXb3JkKTsKKyAgICBKU1ZhbHVl
UmVnc1RlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCosIFJldXNlVGFnLCBKU1ZhbHVlT3BlcmFuZCYp
OwogICAgIH5KU1ZhbHVlUmVnc1RlbXBvcmFyeSgpOwogICAgIAogICAgIEpTVmFsdWVSZWdzIHJl
Z3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IGY5ZGViYjcxMTYwMTg5NzZjMmNjZGIzYjNkMjk1NmNmMDU0NjZl
MjkuLjQ5OTk4Nzg1OTQ0MjhlZmJiOWZmMGZiOGVmZmRkZGY5NzU3NTNiZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMTY1LDkgKzE2NSwxNCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdl
IGVkZ2UsIEdQUlJlZyYgdGFnR1BSLCBHUFJSZWcmIHBheWxvYWRHUFIsCiAgICAgfQogfQogCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gb3JpZ2luLCBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ICwgU3BpbGxSZWdpc3RlcnNNb2Rl
IG1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKK3sKKyAgICBjYWNoZWRHZXRCeUlkKG9yaWdpbiwgYmFz
ZS50YWdHUFIoKSwgYmFzZS5wYXlsb2FkR1BSKCksIHJlc3VsdC50YWdHUFIoKSwgcmVzdWx0LnBh
eWxvYWRHUFIoKSwgaWRlbnRpZmllck51bWJlciwgc2xvd1BhdGhUYXJnZXQsIG1vZGUsIHR5cGUp
OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9h
ZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsCi0gICAg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJn
ZXQsIFNwaWxsUmVnaXN0ZXJzTW9kZSBzcGlsbE1vZGUpCisgICAgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKIHsKICAgICAvLyBUaGlzIGlzIGEgaGFj
a3kgZml4IGZvciB3aGVuIHRoZSByZWdpc3RlciBhbGxvY2F0b3IgZGVjaWRlcyB0byBhbGlhcyB0
aGUgYmFzZSBwYXlsb2FkIHdpdGggdGhlIHJlc3VsdCB0YWcuIFRoaXMgb25seSBoYXBwZW5zCiAg
ICAgLy8gaW4gdGhlIGNhc2Ugb2YgR2V0QnlJZEZsdXNoLCB3aGljaCBoYXMgYSByZWxhdGl2ZWx5
IGV4cGVuc2l2ZSByZWdpc3RlciBhbGxvY2F0aW9uIHN0b3J5IGFscmVhZHkgc28gd2UgcHJvYmFi
bHkgZG9uJ3QgbmVlZCB0bwpAQCAtMTk0LDcgKzE5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhY2hlZEdldEJ5SWQoCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1f
aml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKICAg
ICAgICAgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLAotICAg
ICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBBY2Nlc3NU
eXBlOjpHZXQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIpLCB0eXBlKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAg
ICAgCkBAIC0yMDMsMTYgKzIwOCwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKAogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRoVGFyZ2V0KTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAKKyAgICBKX0pJVE9wZXJhdGlvbl9F
U3NpSkkgZ2V0QnlJZEZ1bmN0aW9uOworICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkK
KyAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAg
IGVsc2UKKyAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGlt
aXplOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsK
ICAgICBpZiAoYmFzZVRhZ0dQUk9yTm9uZSA9PSBJbnZhbGlkR1BSUmVnKSB7CiAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemUsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdldEJ5
SWRGdW5jdGlvbiwKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiksIGdlbi5zdHViSW5mbygpLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNWYWx1ZTo6Q2VsbFRhZyksIGJhc2VQYXlsb2FkR1BSLAogICAgICAgICAgICAgaWRl
bnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2V0QnlJ
ZEZ1bmN0aW9uLAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQ
YXlsb2FkR1BSKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VUYWdHUFJPck5vbmUsCiAgICAgICAgICAg
ICBiYXNlUGF5bG9hZEdQUiwgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAg
fQpAQCAtMzk2MSw3ICszOTcyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICAgICAgCisKKyAgICBjYXNlIFRyeUdldEJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZVRyeUdl
dEJ5SWQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZDog
ewogICAgICAgICBBU1NFUlQobm9kZS0+cHJlZGljdGlvbigpKTsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAw
ZGY0YTMwM2JhNjA2M2ZhNDdkOTc2MjUzOGExZWUzOTJmMjAxZWJkLi43ZWI2YjEwODM5YzliM2Fj
N2FkZWRjZGQ1YTg5M2QwNjE0NDI4MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTE1Myw3ICsxNTMsMTIgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShFZGdlIGVkZ2UpCiAgICAgfQogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3Bp
bGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIG9y
aWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCAsIFNwaWxsUmVn
aXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUpCit7CisgICAgY2FjaGVkR2V0QnlJZChv
cmlnaW4sIGJhc2UuZ3ByKCksIHJlc3VsdC5ncHIoKSwgaWRlbnRpZmllck51bWJlciwgc2xvd1Bh
dGhUYXJnZXQsIG1vZGUsIHR5cGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyByZXN1
bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NUeXBlIHR5cGUp
CiB7CiAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5k
R2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0
cmVhbS0+c2l6ZSgpKTsKICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNl
ZFJlZ2lzdGVycygpOwpAQCAtMTY0LDcgKzE2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
CiAgICAgfQogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCBBY2Nlc3NUeXBlOjpH
ZXQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRHUFIpLCB0eXBlKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKQEAgLTE3Myw3ICsxNzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAKICAgICBhdXRvIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwKKyAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFjY2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSA6IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0R1BS
LCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwKICAgICAgICAgaWRlbnRpZmllclVJRChpZGVudGlm
aWVyTnVtYmVyKSwgc3BpbGxNb2RlKTsKICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwpAQCAtNDAxOSw2ICs0MDI0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgVHJ5R2V0QnlJZDogeworICAgICAgICBjb21waWxl
VHJ5R2V0QnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRC
eUlkOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5wcmVkaWN0aW9uKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggMzFlZGZiNmRlY2M3
MDVkZjgwYTRhNjBiYjI1ZDFiNTA0OTM5ZGI2Mi4uMWM5MWNmNGM1Yzk3YWIyMTU3ZTJhNjg0Nzkz
NTI5NzRjZmFhMjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcApAQCAtMTY2LDYgKzE2Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAg
IGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgorICAgIGNhc2UgVHJ5
R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAg
Y2FzZSBUb1RoaXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggNjBkYWE3YjYwMzYxM2I5MjQyOTFkNmMwY2U0ZWMzMjMwYmQ3MTg0ZC4uNGJl
MjZlZDExYzM5YmJmNjM0ODcwZjU2ZWZhNjM0ODA4MTI2ODMxNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTkzLDkgKzU5MywxMiBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgICAgIGNvbXBpbGVQ
dXRTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyeUdldEJ5
SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnlJZEZsdXNoOgotICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoKTsKKyAgICAgICAgICAgIGNv
bXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBJbjoKICAgICAgICAgICAgIGNvbXBpbGVJbigpOwpAQCAtMjMwMiwxMSArMjMwNSwx
MiBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
SUQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbXBpbGVHZXRCeUlkKCkKKyAgICB2b2lkIGNv
bXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGUgdHlwZSkKICAgICB7CisgICAgICAgIEFTU0VSVCh0eXBl
ID09IEFjY2Vzc1R5cGU6OkdldCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6OkdldFB1cmUpOwogICAg
ICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2Ug
Q2VsbFVzZTogewotICAgICAgICAgICAgc2V0SlNWYWx1ZShnZXRCeUlkKGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtMjMyNCwxMiArMjMyOCwxOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3Vy
ZShjZWxsQ2FzZSksIHVuc3VyZShub3RDZWxsQ2FzZSkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlLCBub3RD
ZWxsQ2FzZSk7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQu
YW5jaG9yKGdldEJ5SWQodmFsdWUpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNlbGxS
ZXN1bHQgPSBtX291dC5hbmNob3IoZ2V0QnlJZCh2YWx1ZSwgdHlwZSkpOwogICAgICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIEpf
SklUT3BlcmF0aW9uX0VKSSBnZXRCeUlkRnVuY3Rpb247CisgICAgICAgICAgICBpZiAodHlwZSA9
PSBBY2Nlc3NUeXBlOjpHZXQpCisgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3Bl
cmF0aW9uR2V0QnlJZEdlbmVyaWM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
Z2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CisKICAgICAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgbm90Q2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCi0g
ICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRC
eUlkR2VuZXJpYyksCisgICAgICAgICAgICAgICAgbV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihnZXRCeUlkRnVuY3Rpb24pLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCB2YWx1ZSwK
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClb
bV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwpAQCAtNzI5Myw3ICs3MzAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RCdXR0ZXJmbHksIHNsb3dCdXR0ZXJmbHkp
OwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgZ2V0QnlJZChMVmFsdWUgYmFzZSkKKyAgICBMVmFs
dWUgZ2V0QnlJZChMVmFsdWUgYmFzZSwgQWNjZXNzVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1f
Z3JhcGguaWRlbnRpZmllcnMoKVtub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwpAQCAtNzMzMSw3
ICs3MzQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJv
eDxKSVRHZXRCeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBqaXQu
Y29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIEpTVmFsdWVSZWdz
KHBhcmFtc1sxXS5ncHIoKSksCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFt
c1swXS5ncHIoKSksIEFjY2Vzc1R5cGU6OkdldCk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHBhcmFtc1swXS5ncHIoKSksIHR5cGUpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC03MzQwLDExICs3MzUwLDE3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKIAorICAgICAgICAgICAgICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRVNz
aUpJIG9wdGltaXphdGlvbkZ1bmN0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5
cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlt
aXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlv
bkZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworCiAgICAgICAgICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQu
bGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wdGltaXphdGlvbkZ1bmN0aW9uLCBwYXJh
bXNbMF0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFtc1sxXS5ncHIoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodWlk
KSkuY2FsbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9u
ZSwgJmppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCBlYzczYzFjMzZhODEyODdhNjE4ZGRkYjRmY2JmNzJjMDRiNmViY2JhLi42NjFmOTUxZmEz
OGRmMzZmOTYxMjc0OTViN2QyNzE1MjVmODZiZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE3MCw2ICsxNzAsMjAgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlU3R1YkkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3Vs
dCgpKTsKIH0KIAorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdl
dEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgYmFz
ZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKK30KKwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDhlODJiM2I5MDc1ZDBh
ZjM3MGU3ZWU1NjlkZGYzYzk1N2MxNDFlOTMuLmM2M2IxOWQ1MGE4YmU2MjA5N2VlZDVjZTFhMjBj
MGJmNmFhOTA0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CkBAIC0yODgsNiArMjg4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93T3V0
T2ZCb3VuZHNBY2Nlc3NFcnJvcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUwKIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqKSBXVEZfSU5URVJO
QUw7CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhF
eGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeUdldEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RyeS1nZXQtYnktaWQuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3RyeS1nZXQtYnktaWQuanMKaW5kZXggMGQ5YjY3YzNmY2Fi
ZjVkMTBiZmRlMjJjM2I4NjQ5MzMxNTA3M2M0MS4uNmIwYjUzODNiM2RkMDA2OGRhOTlmYjZjODEy
MGViMTBkMWFiOWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy90cnktZ2V0LWJ5LWlkLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvdHJ5LWdldC1ieS1pZC5qcwpAQCAtMSwyNiArMSwzNyBAQAogZnVuY3Rpb24gdHJ5R2V0
QnlJZFRleHQocHJvcGVydHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0aW9uIChiYXNlKSB7IHJldHVy
biBAdHJ5R2V0QnlJZChiYXNlLCAnJHtwcm9wZXJ0eU5hbWV9Jyk7IH0pYDsgfQogCitmdW5jdGlv
biB0cnlHZXRCeUlkVGV4dFN0cmljdChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rpb24g
KGJhc2UpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gQHRyeUdldEJ5SWQoYmFzZSwgJyR7cHJvcGVy
dHlOYW1lfScpOyB9KWA7IH0KIAogLy8gVGVzdCBnZXQgdmFsdWUgb2ZmIG9iamVjdC4KIHsKLSAg
ICBsZXQgZ2V0Q2FsbGVyID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4dCgiY2FsbGVyIikp
OwotICAgIG5vSW5saW5lKGdldENhbGxlcik7CisgICAgbGV0IGdldCA9IGNyZWF0ZUJ1aWx0aW4o
dHJ5R2V0QnlJZFRleHQoImNhbGxlciIpKTsKKyAgICBub0lubGluZShnZXQpOworICAgIGxldCBn
ZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0U3RyaWN0KCJjYWxsZXIiKSk7
CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0KTsKKwogICAgIGxldCBvYmogPSB7Y2FsbGVyOiAxfTsK
IAogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgaWYgKGdl
dENhbGxlcihvYmopICE9PSAxKQorICAgICAgICBpZiAoZ2V0KG9iaikgIT09IDEpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOworICAgICAg
ICBpZiAoZ2V0U3RyaWN0KG9iaikgIT09IDEpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Indyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOwogICAgIH0KIH0KIAogLy8gVGVzdCBzbG90IGlz
IGN1c3RvbSBmdW5jdGlvbiB0cmFwIGZvciBhIHZhbHVlLgogewotICAgIGxldCBnZXRDYWxsZXIg
PSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0KCJjYWxsZXIiKSk7Ci0gICAgbm9JbmxpbmUo
Z2V0Q2FsbGVyKTsKKyAgICBsZXQgZ2V0ID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4dCgi
Y2FsbGVyIikpOworICAgIG5vSW5saW5lKGdldCk7CisgICAgbGV0IGdldFN0cmljdCA9IGNyZWF0
ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHRTdHJpY3QoImNhbGxlciIpKTsKKyAgICBub0lubGluZShn
ZXRTdHJpY3QpOworCiAgICAgbGV0IGZ1bmMgPSBmdW5jdGlvbiAoKSB7fTsKIAogICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKLSAgICAgICAgaWYgKGdldENhbGxlcihmdW5j
KSAhPT0gbnVsbCkKKyAgICAgICAgaWYgKGdldChmdW5jKSAhPT0gbnVsbCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CisgICAgICAgIGlm
IChnZXRTdHJpY3QoZnVuYykgIT09IG51bGwpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Indyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOwogICAgIH0KIH0KQEAgLTI5LDEyICs0MCwxNyBA
QCBmdW5jdGlvbiB0cnlHZXRCeUlkVGV4dChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rp
b24gKGJhc2UpIHsgcmV0dXJuIEB0cnlHZQogewogICAgIGxldCBnZXQgPSBjcmVhdGVCdWlsdGlu
KHRyeUdldEJ5SWRUZXh0KCJnZXR0ZXJTZXR0ZXIiKSk7CiAgICAgbm9JbmxpbmUoZ2V0KTsKKyAg
ICBsZXQgZ2V0U3RyaWN0ID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4dFN0cmljdCgiZ2V0
dGVyU2V0dGVyIikpOworICAgIG5vSW5saW5lKGdldFN0cmljdCk7CisKICAgICBsZXQgb2JqID0g
e307CiAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgImdldHRlclNldHRlciIsIHsgZ2V0
OiBmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigic2hvdWxkIG5vdCBiZSBjYWxsZWQiKTsg
fSB9KTsKIAogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKICAgICAgICAg
aWYgKGdldChvYmopICE9PSBnZXRHZXR0ZXJTZXR0ZXIob2JqLCAiZ2V0dGVyU2V0dGVyIikpCiAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOwor
ICAgICAgICBpZiAoZ2V0U3RyaWN0KG9iaikgIT09IGdldEdldHRlclNldHRlcihvYmosICJnZXR0
ZXJTZXR0ZXIiKSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0
aW9uOiAiICsgaSk7CiAgICAgfQogfQogCkBAIC00MiwxMSArNTgsMTYgQEAgZnVuY3Rpb24gdHJ5
R2V0QnlJZFRleHQocHJvcGVydHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0aW9uIChiYXNlKSB7IHJl
dHVybiBAdHJ5R2UKIHsKICAgICBsZXQgZ2V0ID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4
dCgiZ2V0dGVyU2V0dGVyIikpOwogICAgIG5vSW5saW5lKGdldCk7CisgICAgbGV0IGdldFN0cmlj
dCA9IGNyZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHRTdHJpY3QoImdldHRlclNldHRlciIpKTsK
KyAgICBub0lubGluZShnZXRTdHJpY3QpOworCiAgICAgbGV0IG9iaiA9IHt9OwogCiAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewogICAgICAgICBpZiAoZ2V0KG9iaikgIT09
IHVuZGVmaW5lZCkKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0
aW9uOiAiICsgaSk7CisgICAgICAgIGlmIChnZXRTdHJpY3Qob2JqKSAhPT0gdW5kZWZpbmVkKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsK
ICAgICB9CiB9CiAKQEAgLTU0LDYgKzc1LDggQEAgZnVuY3Rpb24gdHJ5R2V0QnlJZFRleHQocHJv
cGVydHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0aW9uIChiYXNlKSB7IHJldHVybiBAdHJ5R2UKIHsK
ICAgICBsZXQgZ2V0ID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4dCgidmFsdWUiKSk7CiAg
ICAgbm9JbmxpbmUoZ2V0KTsKKyAgICBsZXQgZ2V0U3RyaWN0ID0gY3JlYXRlQnVpbHRpbih0cnlH
ZXRCeUlkVGV4dFN0cmljdCgidmFsdWUiKSk7CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0KTsKIAog
ICAgIGxldCBvYmogPSB7dmFsdWU6IDF9OwogICAgIGxldCBwID0gbmV3IFByb3h5KG9iaiwgeyBn
ZXQ6IGZ1bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3IoInNob3VsZCBub3QgYmUgY2FsbGVkIik7
IH0gfSk7CkBAIC02MSw2ICs4NCw4IEBAIGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5
TmFtZSkgeyByZXR1cm4gYChmdW5jdGlvbiAoYmFzZSkgeyByZXR1cm4gQHRyeUdlCiAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewogICAgICAgICBpZiAoZ2V0KHApICE9PSBu
dWxsKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIg
KyBpKTsKKyAgICAgICAgaWYgKGdldFN0cmljdChwKSAhPT0gbnVsbCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CiAgICAgfQogfQogCkBA
IC02OCw2ICs5Myw4IEBAIGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5TmFtZSkgeyBy
ZXR1cm4gYChmdW5jdGlvbiAoYmFzZSkgeyByZXR1cm4gQHRyeUdlCiB7CiAgICAgbGV0IGdldCA9
IGNyZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHQoImNhbGxlciIpKTsKICAgICBub0lubGluZShn
ZXQpOworICAgIGxldCBnZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0U3Ry
aWN0KCJjYWxsZXIiKSk7CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0KTsKIAogICAgIGxldCBvYmog
PSB7Y2FsbGVyIDogMX07CiAgICAgbGV0IGZ1bmMgPSBmdW5jdGlvbigpIHt9OwpAQCAtNzYsOSAr
MTAzLDEzIEBAIGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5TmFtZSkgeyByZXR1cm4g
YChmdW5jdGlvbiAoYmFzZSkgeyByZXR1cm4gQHRyeUdlCiAgICAgICAgIGlmIChpICUgMTAwID09
PSAwKSB7CiAgICAgICAgICAgICBpZiAoZ2V0KGZ1bmMpICE9PSBudWxsKQogICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CisgICAgICAg
ICAgICBpZiAoZ2V0U3RyaWN0KGZ1bmMpICE9PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGlmIChnZXQob2JqKSAhPT0gMSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOworICAgICAgICAgICAgaWYgKGdldFN0
cmljdChvYmopICE9PSAxKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBp
dGVyYXRpb246ICIgKyBpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTg3LDYgKzExOCw4IEBA
IGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5TmFtZSkgeyByZXR1cm4gYChmdW5jdGlv
biAoYmFzZSkgeyByZXR1cm4gQHRyeUdlCiB7CiAgICAgbGV0IGdldCA9IGNyZWF0ZUJ1aWx0aW4o
dHJ5R2V0QnlJZFRleHQoImNhbGxlciIpKTsKICAgICBub0lubGluZShnZXQpOworICAgIGxldCBn
ZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0U3RyaWN0KCJjYWxsZXIiKSk7
CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0KTsKIAogICAgIGxldCBmdW5jID0gZnVuY3Rpb24oKSB7
fTsKIApAQCAtOTQsMTAgKzEyNywxNCBAQCBmdW5jdGlvbiB0cnlHZXRCeUlkVGV4dChwcm9wZXJ0
eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rpb24gKGJhc2UpIHsgcmV0dXJuIEB0cnlHZQogICAgICAg
ICBpZiAoaSAlIDEwMCA9PT0gMCkgewogICAgICAgICAgICAgaWYgKGdldChmdW5jKSAhPT0gbnVs
bCkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjog
IiArIGkpOworICAgICAgICAgICAgaWYgKGdldFN0cmljdChmdW5jKSAhPT0gbnVsbCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZXQgb2JqID0ge2NhbGxlciA6IDF9OwogICAgICAg
ICAgICAgaWYgKGdldChvYmopICE9PSAxKQogICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CisgICAgICAgICAgICBpZiAoZ2V0U3RyaWN0
KG9iaikgIT09IDEpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJh
dGlvbjogIiArIGkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTA2LDEyICsxNDMsMzAgQEAg
ZnVuY3Rpb24gdHJ5R2V0QnlJZFRleHQocHJvcGVydHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0aW9u
IChiYXNlKSB7IHJldHVybiBAdHJ5R2UKIHsKICAgICBsZXQgZ2V0ID0gY3JlYXRlQnVpbHRpbih0
cnlHZXRCeUlkVGV4dCgibGVuZ3RoIikpOwogICAgIG5vSW5saW5lKGdldCk7CisgICAgbGV0IGdl
dFN0cmljdCA9IGNyZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHRTdHJpY3QoImxlbmd0aCIpKTsK
KyAgICBub0lubGluZShnZXRTdHJpY3QpOwogCiAgICAgbGV0IGFyciA9IFtdOwogCiAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgewogICAgICAgICBpZiAoZ2V0KGFycikgIT09
IG51bGwpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjog
IiArIGkpOworICAgICAgICBpZiAoZ2V0U3RyaWN0KGFycikgIT09IG51bGwpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOworICAgIH0KK30K
IAorLy8gVGVzdCB3aXRoIG5vbi1vYmplY3QuCit7CisgICAgbGV0IGdldCA9IGNyZWF0ZUJ1aWx0
aW4odHJ5R2V0QnlJZFRleHQoImxlbmd0aCIpKTsKKyAgICBub0lubGluZShnZXQpOworICAgIGxl
dCBnZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0U3RyaWN0KCJsZW5ndGgi
KSk7CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDAwOyBpKyspIHsKKyAgICAgICAgaWYgKGdldCgxKSAhPT0gdW5kZWZpbmVkKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKKyAgICAg
ICAgaWYgKGdldFN0cmljdCgxKSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276051</attachid>
            <date>2016-04-08 16:20:49 -0700</date>
            <delta_ts>2016-04-09 20:38:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156378-20160408162053.patch</filename>
            <type>text/plain</type>
            <size>40949</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjYyNThmNDhhZDQ4ZmVjOGJjN2I0MTgxOTEwY2Y2ODM4M2QyYzYzLi4wOGMwYzdjM2NjYzJjODFk
OTc2OTUzOTcyZTg2ZDI4ZDk2MWZkYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxNi0wNC0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICB0cnlHZXRCeUlkIHNob3VsZCBiZSBzdXBwb3J0ZWQgYnkgdGhlIERG
Ry9GVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NjM3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0cnlHZXRCeUlkIGluIHRoZSBERkcvRlRMLiBJdCBh
ZGRzIGEgbmV3IERGRyBub2RlCisgICAgICAgIFRyeUdldEJ5SWQsIHdoaWNoIGFjdHMgc2ltaWxh
cmx5IHRvIHRoZSBub3JtYWwgR2V0QnlJZCBERkcgbm9kZS4gT25lIGtleQorICAgICAgICBkaWZm
ZXJlbmNlIGJldHdlZW4gR2V0QnlJZCBhbmQgVHJ5R2V0QnlJZCBpcyB0aGF0IGluIHRoZSBMTElu
dCBhbmQgQmFzZWxpbmUKKyAgICAgICAgd2UgZG8gbm90IHByb2ZpbGUgdGhlIHJlc3VsdCB0eXBl
LiBUaGlzIHByb2ZpbGluZyBpcyB1bm5lc3NhcnkgZm9yIHRoZSBjdXJyZW50CisgICAgICAgIHVz
ZSBjYXNlIG9mIHRyeUdldEJ5SWQsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIGEgc3RyaWN0IGVx
dWFsaXR5IGNvbXBhcmlzaW9uCisgICAgICAgIGFnYWluc3QgYSBzcGVjaWZpYyBvYmplY3Qgb3Ig
dW5kZWZpbmVkLiBJbiBlaXRoZXIgY2FzZSBvdGhlciBERkcgb3B0aW1pemF0aW9ucworICAgICAg
ICB3aWxsIG1ha2UgdGhpcyBlcXVhbGx5IGZhc3Qgd2l0aCBvciB3aXRob3V0IHRoZSBwcm9maWxp
bmcgaW5mb3JtYXRpb24uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIHBhdGNoIGFkZHMg
bmV3IHJldXNlIG1vZGVzIGZvciBKU1ZhbHVlUmVnc1RlbXBvcmFyeSB0aGF0IHRha2UKKyAgICAg
ICAgYW4gb3BlcmFuZCBhbmQgYXR0ZW1wdCB0byByZXVzZSB0aGUgcmVnaXN0ZXJzIGZvciB0aGF0
IG9wZXJhbmQgaWYgdGhleSBhcmUgZnJlZQorICAgICAgICBhZnRlciB0aGUgY3VycmVudCBERkcg
bm9kZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2spOgor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXpl
KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2Vz
R0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllcik6CisgICAgICAgICogZGZnL0RGR05v
ZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFn
YXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpKU1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1w
b3JhcnkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlND
OjpERkc6OkdQUlRlbXBvcmFyeTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5
SWQpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklU
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy90cnktZ2V0LWJ5LWlkLmpzOgor
ICAgICAgICAodHJ5R2V0QnlJZFRleHRTdHJpY3QpOgorICAgICAgICAoZ2V0IGxldCk6CisgICAg
ICAgIChsZXQuZ2V0IGNyZWF0ZUJ1aWx0aW4pOgorICAgICAgICAoZ2V0IHRocm93KToKKyAgICAg
ICAgKGdldENhbGxlci5vYmouMS50aHJvdy5uZXcuRXJyb3IpOiBEZWxldGVkLgorCiAyMDE2LTA0
LTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogUHJvZmlsZVZpZXcgc291cmNlIGxpbmtzIGFyZSBvZmYgYnkgMSBsaW5lLCB3
b3JzZSBpbiBwcmV0dHkgcHJpbnRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggYTU1ZDUzYTg3ZGM3M2IwYjhiNDFhMWYz
YTBmYzE1ZmQxYmEzNzFiNC4uNGRjNzM4MDExYjI1NDk0OWEwZTBhMWFkYWVjMDA2NWFmMTNmYTll
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcApAQCAtNzUsNyArNzUsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZAogICAgIAogICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCkgKyBieXRlY29kZUluZGV4OwogICAgIAotICAgIGlmIChpbnN0cnVjdGlvblswXS51
Lm9wY29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKG9wX2dldF9hcnJheV9sZW5ndGgpKQorICAgIGlm
IChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBMTEludDo6Z2V0T3Bjb2RlKG9wX2dldF9hcnJh
eV9sZW5ndGgpIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IExMSW50OjpnZXRPcGNvZGUo
b3BfdHJ5X2dldF9ieV9pZCkpCiAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIGZhbHNlKTsKIAogICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gaW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmVJRDsKQEAgLTIxMCw3ICsyMTAsOCBAQCBHZXRCeUlkU3RhdHVzIEdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAog
ICAgICAgICAgICAgICAgIEpTRnVuY3Rpb24qIGludHJpbnNpY0Z1bmN0aW9uID0gbnVsbHB0cjsK
IAogICAgICAgICAgICAgICAgIHN3aXRjaCAoYWNjZXNzLnR5cGUoKSkgewotICAgICAgICAgICAg
ICAgIGNhc2UgQWNjZXNzQ2FzZTo6TG9hZDogeworICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNz
Q2FzZTo6TG9hZDoKKyAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkdldEdldHRlcjog
ewogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbnRyaW5zaWNHZXR0ZXI6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA3Y2E2YmJjMWRiNzdhNDI0MDQ3ZDM2ZDgyN2VkNzQzOTY5MjMyYTdhLi5iY2Zl
MzRiNzM0NzRlYzAxYzlhM2Q4OTUzZDIyMTEyMDFmOWY2YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0xOTY0LDcgKzE5NjQsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAK
KworICAgIGNhc2UgVHJ5R2V0QnlJZDoKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNv
bnN0YW50IGZvbGQgYXQgbGVhc3QgYXMgd2VsbCBhcyB0aGUgbm9ybWFsIEdldEJ5SWQgY2FzZS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjQy
MgorICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOwor
CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlm
ICghbm9kZS0+cHJlZGljdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDAwMThmNmY2Y2FlYjQxOGRmMzBlMjcwNzVhMDdk
N2RkMGQ3ZjEzOGUuLjg5ZTdmNmZhNDMxMGZmZDZjOTc1ZTBhNDQ5NmE0ZDNlYzBlM2M5YzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC0yMzEsOSArMjMxLDEwIEBAIHByaXZhdGU6CiAgICAgTm9kZSogbG9hZChTcGVjdWxhdGVkVHlw
ZSwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgY29uc3QgVmFyaWFudFR5
cGUmKTsKIAogICAgIE5vZGUqIHN0b3JlKE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXIs
IGNvbnN0IFB1dEJ5SWRWYXJpYW50JiwgTm9kZSogdmFsdWUpOwotICAgICAgICAKKworICAgIHZv
aWQgaGFuZGxlVHJ5R2V0QnlJZChpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBOb2RlKiBiYXNlLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CiAgICAgdm9p
ZCBoYW5kbGVHZXRCeUlkKAotICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxh
dGVkVHlwZSwgTm9kZSogYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgR2V0QnlJZFN0
YXR1cyk7CisgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlLCBO
b2RlKiBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBHZXRCeUlkU3RhdHVzLCBBY2Nl
c3NUeXBlKTsKICAgICB2b2lkIGVtaXRQdXRCeUlkKAogICAgICAgICBOb2RlKiBiYXNlLCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyLCBOb2RlKiB2YWx1ZSwgIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
LCBib29sIGlzRGlyZWN0KTsKICAgICB2b2lkIGhhbmRsZVB1dEJ5SWQoCkBAIC0yODg3LDcgKzI4
ODgsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6c3RvcmUoTm9kZSogYmFzZSwgdW5zaWduZWQg
aWRlbnRpZmllciwgY29uc3QgUHV0QnlJZFZhcmlhbgogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24sIE5vZGUqIGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCi0gICAg
R2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzKQorICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJZFN0
YXR1cywgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIC8vIEF0dGVtcHQgdG8gcmVkdWNlIHRoZSBz
ZXQgb2YgdGhpbmdzIGluIHRoZSBHZXRCeUlkU3RhdHVzLgogICAgIGlmIChiYXNlLT5vcCgpID09
IE5ld09iamVjdCkgewpAQCAtMjkwNSw4ICsyOTA2LDEzIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZpbHRlcihiYXNlLT5z
dHJ1Y3R1cmUoKSk7CiAgICAgfQogICAgIAotICAgIE5vZGVUeXBlIGdldEJ5SWQgPSBnZXRCeUlk
U3RhdHVzLm1ha2VzQ2FsbHMoKSA/IEdldEJ5SWRGbHVzaCA6IEdldEJ5SWQ7Ci0gICAgCisgICAg
Tm9kZVR5cGUgZ2V0QnlJZDsKKyAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCisgICAg
ICAgIGdldEJ5SWQgPSBnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSA/IEdldEJ5SWRGbHVzaCA6
IEdldEJ5SWQ7CisgICAgZWxzZQorICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsKKworICAg
IEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCB8fCAhZ2V0QnlJZFN0YXR1cy5tYWtlc0Nh
bGxzKCkpOwogICAgIGlmICghZ2V0QnlJZFN0YXR1cy5pc1NpbXBsZSgpIHx8ICFnZXRCeUlkU3Rh
dHVzLm51bVZhcmlhbnRzKCkgfHwgIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAogICAgICAgICAg
ICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgYmFzZSkpOwpAQCAtMjk3Niw2ICsyOTgyLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQogICAg
ICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRHZXRCeUlkKCk7CiAKKyAg
ICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwgIXZhcmlhbnQuY2FsbExpbmtTdGF0
dXMoKSk7CiAgICAgaWYgKCF2YXJpYW50LmNhbGxMaW5rU3RhdHVzKCkgJiYgdmFyaWFudC5pbnRy
aW5zaWMoKSA9PSBOb0ludHJpbnNpYykgewogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRl
c3RpbmF0aW9uT3BlcmFuZCksIGxvYWRlZFZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk5
MSw4ICsyOTk4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh2YXJpYW50LmludHJpbnNpYygpICE9IE5vSW50
cmluc2ljKQotICAgICAgICBBU1NFUlQodmFyaWFudC5pbnRyaW5zaWMoKSA9PSBOb0ludHJpbnNp
Yyk7CisgICAgQVNTRVJUKHZhcmlhbnQuaW50cmluc2ljKCkgPT0gTm9JbnRyaW5zaWMpOwogCiAg
ICAgLy8gTWFrZSBhIGNhbGwuIFdlIGRvbid0IHRyeSB0byBnZXQgZmFuY3kgd2l0aCB1c2luZyB0
aGUgc21hbGxlc3Qgb3BlcmFuZCBudW1iZXIgYmVjYXVzZQogICAgIC8vIHRoZSBzdGFjayBsYXlv
dXQgcGhhc2Ugc2hvdWxkIGNvbXByZXNzIHRoZSBzdGFjayBhbnl3YXkuCkBAIC0zNzkzLDcgKzM3
OTksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICBieVZhbEluZm8tPnN0dWJJbmZvLCBj
dXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOwogCi0gICAgICAgICAgICAgICAgICAgIGhhbmRsZUdl
dEJ5SWQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwg
aWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGhh
bmRsZUdldEJ5SWQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwg
YmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0KTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTM4NDcsNyArMzg1MywyMiBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfdmFsKTsKICAgICAgICAgfQotICAgICAgICAg
ICAgCisKKyAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CisgICAgICAgICAgICBOb2Rl
KiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZF07CisgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlm
aWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworCisgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIGdl
dEJ5SWRTdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9z
LAorICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CisKKyAgICAgICAg
ICAgIGhhbmRsZUdldEJ5SWQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgU3BlY0hl
YXBUb3AsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMsIEFjY2Vzc1R5cGU6
OkdldFB1cmUpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90cnlfZ2V0X2J5X2lkKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9w
X2dldF9hcnJheV9sZW5ndGg6IHsKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24gPSBnZXRQcmVkaWN0aW9uKCk7CkBAIC0zODYyLDcgKzM4ODMsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGN1cnJl
bnRDb2RlT3JpZ2luKCksIHVpZCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGhhbmRsZUdl
dEJ5SWQoCi0gICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
cHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cyk7CisgICAg
ICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwg
YmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0KTsK
IAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGEyMmI2
Mzk0ZWQ4NzVkY2RmYTRmNmU5MDkzMmQ1MmZjYjM0MmI3YzQuLjZiZjMzNGZjNzM1MDAzZGM4NjMy
NGMxMzA4OTVkZTYwZGI4NjFmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKQEAgLTE1Miw2ICsxNTIsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5z
dHJ1YwogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDoKICAgICBjYXNlIG9wX3B1dF9ieV92YWw6CiAg
ICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKKyAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6
CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgog
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCA5NDM0YTc2YTc3ZWQ0ZDRiNjg0ZGMyYTc0YzBmM2M2N2Q2ZDk1YzRjLi42
YzQ5Y2MwNjYzYmU1MDBjNzNkODQxY2ZlYzQzZWJiNjgxYWY2MjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtODQ4LDcgKzg0OCwxMiBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlM
b2MsIGhlYXAsIG5vZGUtPmNoaWxkMigpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgICAgICAKKworICAgIGNhc2UgVHJ5R2V0QnlJZDogeworICAgICAgICBy
ZWFkKEhlYXApOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBNdWx0aUdldEJ5
T2Zmc2V0OiB7CiAgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAgICAgcmVh
ZChKU09iamVjdF9idXR0ZXJmbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCmluZGV4IDAwY2IyN2RhZThhNWZmM2ExYzBjMjU2NDQyNzc1YTE2NmQ5YjZkODEuLjI5NDFm
ZjNkODQwNzIzZDg1NzM5MTEyMTE4OTUzMjM0ZTJlODRiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTk2LDYgKzk2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXJpdGhDb3M6CiAgICAgY2FzZSBBcml0aExv
ZzoKICAgICBjYXNlIFZhbHVlQWRkOgorICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdl
dEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMjIwMWFhNDJmOWI1
ODc4OGUwOGIxOTQ5MmM5YmM5NGMzYjAzNWZmNi4uZjFiNjI5YWVkMDEyMGE5MWM5NjA2ZjFhMjQx
NmY2ZDMwYzU1ZTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCkBAIC0xMDY5LDYgKzEwNjksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBUcnlHZXRCeUlkOiB7CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRG
bHVzaDogewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhl
IEJ5dGVDb2RlUGFyc2VyIGJhc2VkIG9uIHJlYWRpbmcgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IGQyMjA2N2E5NDRjZjUxMjIwMGE2MzIwOWI3NTVlNmVkNGZmNjRmMzQu
LjRlMzcyZWFkYzM3NDU4ODM1ZDVmOTkzMTY0MWYzMzUxZDkwOGU3ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC04NjYsNiArODY2LDcgQEAgc3RydWN0IE5vZGUgewogICAg
IGJvb2wgaGFzSWRlbnRpZmllcigpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAg
ICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNh
c2UgR2V0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZWM2YjZlMTM2ZmMyOWFjNmUyMGI4NDRiMjdhOGQx
MGRkZjRmMTQ1YS4uZThiYzUwNjMwYzZmMzMzOWFkMWUwZDA2MjJkZGEwMDNkN2QzNjI4YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMTgyLDYgKzE4Miw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRCeVZhbERpcmVj
dCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0QnlW
YWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5
VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAorICAgIG1hY3Jv
KFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGI0OTg4MzczMjQ5OWZiZjIw
YWY3NDg1MzcyOTVkYzZjMmRkODVmYWEuLmYyYzU4OWNjMzE2NTI4ZGI1NzIwOWY1NzUyOTI5OWU5
NTUxNjE5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xNzIsNyArMTcyLDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0ludDMyKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBj
YXNlIFRyeUdldEJ5SWQ6IHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihT
cGVjQnl0ZWNvZGVUb3ApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAg
ICBjYXNlIEFycmF5UG9wOgogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgY2FzZSBS
ZWdFeHBFeGVjOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCA1MmJkY2ZlNWU4ODA2NzdmNGY5MDNkMDlhYjNiODVmY2Y5ZTI2YjQ2Li43NDAwYjlh
ZTdiYWY4YjIzNzg5ZGI0MDBkOWE4ZjliODJjMTU5NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTkxLDYgKzE5MSw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEFyaXRoQ29zOgogICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBW
YWx1ZUFkZDoKKyAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNh
c2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2IyOTdmNTQxNTRmNDEzNWYz
MzY0ZGYzYTFiMGRkNWQxOGYxNGRkYi4uMTBkN2M1Mjk3N2NkZGE0ZjRmZjQzNzc3ZTUzY2JjYThk
ZmM3NWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTk2NCw2ICs5NjQsNDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6dXNlQ2hp
bGRyZW4oTm9kZSogbm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUcnlHZXRCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKKyAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVSZWdzVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
YmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7CisgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAgIGJhc2Uu
dXNlKCk7CisKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJh
c2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVy
OjpKdW1wKCksIERvbnRTcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVW50eXBl
ZFVzZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNl
KTsKKworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICAg
ICAgYmFzZS51c2UoKTsKKworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VSZWdzKTsKKworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKKwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJCYWQgdXNl
IGtpbmQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfSAKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CkBAIC0xMTY4LDYgKzEyMDksNDQgQEAgSlNWYWx1ZVJl
Z3NUZW1wb3Jhcnk6OkpTVmFsdWVSZWdzVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiBqaXQpCiB7
CiB9CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0pTVmFsdWVS
ZWdzVGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCogaml0LCBS
ZXVzZVRhZywgVCYgb3BlcmFuZCwgV2hpY2hWYWx1ZVdvcmQpCisgICAgOiBtX2dwcihqaXQsIFJl
dXNlLCBvcGVyYW5kKQoreworfQorI2Vsc2UKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitKU1ZhbHVl
UmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCwg
UmV1c2VUYWcsIFQmIG9wZXJhbmQsIFdoaWNoVmFsdWVXb3JkIHJlc3VsdFdvcmQpCit7CisgICAg
aWYgKHJlc3VsdFdvcmQgPT0gUGF5bG9hZFdvcmQpIHsKKyAgICAgICAgbV9wYXlsb2FkR1BSID0g
R1BSVGVtcG9yYXJ5KGppdCwgUmV1c2UsIG9wZXJhbmQpOworICAgICAgICBtX3RhZ0dQUiA9IEdQ
UlRlbXBvcmFyeShqaXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcGF5bG9hZEdQUiA9IEdQ
UlRlbXBvcmFyeShqaXQpOworICAgICAgICBtX3RhZ0dQUiA9IEdQUlRlbXBvcmFyeShqaXQsIFJl
dXNlLCBvcGVyYW5kKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmIFVTRShKU1ZBTFVFNjQpCitK
U1ZhbHVlUmVnc1RlbXBvcmFyeTo6SlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQq
IGppdCwgUmV1c2VUYWcsIEpTVmFsdWVPcGVyYW5kJiBvcGVyYW5kKQoreworICAgIG1fZ3ByID0g
R1BSVGVtcG9yYXJ5KGppdCwgUmV1c2UsIG9wZXJhbmQpOworfQorI2Vsc2UKK0pTVmFsdWVSZWdz
VGVtcG9yYXJ5OjpKU1ZhbHVlUmVnc1RlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCogaml0LCBSZXVz
ZVRhZywgSlNWYWx1ZU9wZXJhbmQmIG9wZXJhbmQpCit7CisgICAgaWYgKGppdC0+Y2FuUmV1c2Uo
b3BlcmFuZC5ub2RlKCkpKSB7CisgICAgICAgIG1fcGF5bG9hZEdQUiA9IEdQUlRlbXBvcmFyeShq
aXQsIFJldXNlLCBvcGVyYW5kLCBQYXlsb2FkV29yZCk7CisgICAgICAgIG1fdGFnR1BSID0gR1BS
VGVtcG9yYXJ5KGppdCwgUmV1c2UsIG9wZXJhbmQsIFRhZ1dvcmQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fcGF5bG9hZEdQUiA9IEdQUlRlbXBvcmFyeShqaXQpOworICAgICAgICBtX3RhZ0dQ
UiA9IEdQUlRlbXBvcmFyeShqaXQpOworICAgIH0KK30KKyNlbmRpZgorCiBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeTo6fkpTVmFsdWVSZWdzVGVtcG9yYXJ5KCkgeyB9CiAKIEpTVmFsdWVSZWdzIEpTVmFs
dWVSZWdzVGVtcG9yYXJ5OjpyZWdzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAppbmRleCA4NDA5ZjY1ZmVjYjM3YmZiMzcyY2U2NmFlZjA5NTc3OTQ4
YjUzMmExLi43MzhiZTFjNmZlM2U4NDYyNzEwMmFhM2E5ZDViZDA0YTFiZmQxOGEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC03MDMsMTQg
KzcwMywxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTW92SGludChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlTW92SGludEFuZENoZWNrKE5vZGUqKTsKIAorICAgIHZvaWQgY2FjaGVkR2V0
QnlJZChDb2RlT3JpZ2luLCBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyByZXN1bHQsIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0
ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGws
IEFjY2Vzc1R5cGUgPSBBY2Nlc3NUeXBlOjpHZXQpOworCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBy
ZXN1bHRHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0g
TmVlZFRvU3BpbGwpOworICAgIHZvaWQgY2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVtcCgpLCBTcGls
bFJlZ2lzdGVyc01vZGUgPSBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZSA9IEFjY2Vzc1R5cGU6Okdl
dCk7CiAgICAgdm9pZCBjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNlLCBHUFJS
ZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQ
dXRLaW5kLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpK
dW1wKCksIFNwaWxsUmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKICNlbGlmIFVTRShKU1ZB
TFVFMzJfNjQpCi0gICAgdm9pZCBjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4sIEdQUlJlZyBiYXNl
VGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIs
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCA9IEpJVENvbXBpbGVyOjpKdW1wKCksIFNwaWxs
UmVnaXN0ZXJzTW9kZSA9IE5lZWRUb1NwaWxsKTsKKyAgICB2b2lkIGNhY2hlZEdldEJ5SWQoQ29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiwg
R1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29t
cGlsZXI6Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwsIEFjY2Vzc1R5
cGUgPSBBY2Nlc3NUeXBlOjpHZXQpOwogICAgIHZvaWQgY2FjaGVkUHV0QnlJZChDb2RlT3JpZ2lu
LCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyB2YWx1ZVRhZ0dQUiwgR1BSUmVnIHZhbHVl
UGF5bG9hZEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IFB1dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6
Okp1bXAoKSwgU3BpbGxSZWdpc3RlcnNNb2RlID0gTmVlZFRvU3BpbGwpOwogI2VuZGlmCi0gICAg
CisKKyAgICB2b2lkIGNvbXBpbGVUcnlHZXRCeUlkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVJ
bihOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlQmFzZVZhbHVlU3RvcmVCYXJyaWVyKEVk
Z2UmIGJhc2VFZGdlLCBFZGdlJiB2YWx1ZUVkZ2UpOwpAQCAtMjk0MCw2ICsyOTQzLDE3IEBAIHB1
YmxpYzoKICAgICBHUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqLCBSZXVzZVRhZywgSlNWYWx1
ZU9wZXJhbmQmLCBXaGljaFZhbHVlV29yZCk7CiAjZW5kaWYKIAorICAgIEdQUlRlbXBvcmFyeShH
UFJUZW1wb3JhcnkmIG90aGVyKSA9IGRlbGV0ZTsKKworICAgIEdQUlRlbXBvcmFyeSYgb3BlcmF0
b3I9KEdQUlRlbXBvcmFyeSYmIG90aGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2ppdCk7
CisgICAgICAgIEFTU0VSVChtX2dwciA9PSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgc3RkOjpz
d2FwKG1faml0LCBvdGhlci5tX2ppdCk7CisgICAgICAgIHN0ZDo6c3dhcChtX2dwciwgb3RoZXIu
bV9ncHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgdm9pZCBhZG9wdChH
UFJUZW1wb3JhcnkmKTsKIAogICAgIH5HUFJUZW1wb3JhcnkoKQpAQCAtMjk2Miw2ICsyOTc2LDkg
QEAgY2xhc3MgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgewogcHVibGljOgogICAgIEpTVmFsdWVSZWdz
VGVtcG9yYXJ5KCk7CiAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5KFNwZWN1
bGF0aXZlSklUKiwgUmV1c2VUYWcsIFQmIG9wZXJhbmQsIFdoaWNoVmFsdWVXb3JkIHJlc3VsdFJl
Z1dvcmQgPSBQYXlsb2FkV29yZCk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkoU3BlY3VsYXRp
dmVKSVQqLCBSZXVzZVRhZywgSlNWYWx1ZU9wZXJhbmQmKTsKICAgICB+SlNWYWx1ZVJlZ3NUZW1w
b3JhcnkoKTsKICAgICAKICAgICBKU1ZhbHVlUmVncyByZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmOWRl
YmI3MTE2MDE4OTc2YzJjY2RiM2IzZDI5NTZjZjA1NDY2ZTI5Li40OTk5ODc4NTk0NDI4ZWZiYjlm
ZjBmYjhlZmZkZGRmOTc1NzUzYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTE2NSw5ICsxNjUsMTQgQEAgYm9v
bCBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSBlZGdlLCBHUFJSZWcmIHRhZ0dQUiwg
R1BSUmVnJiBwYXlsb2FkR1BSLAogICAgIH0KIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2Fj
aGVkR2V0QnlJZChDb2RlT3JpZ2luIG9yaWdpbiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aFRhcmdldCAsIFNwaWxsUmVnaXN0ZXJzTW9kZSBtb2RlLCBBY2Nlc3NUeXBlIHR5cGUp
Cit7CisgICAgY2FjaGVkR2V0QnlJZChvcmlnaW4sIGJhc2UudGFnR1BSKCksIGJhc2UucGF5bG9h
ZEdQUigpLCByZXN1bHQudGFnR1BSKCksIHJlc3VsdC5wYXlsb2FkR1BSKCksIGlkZW50aWZpZXJO
dW1iZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdH
UFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLAotICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUg
c3BpbGxNb2RlKQorICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBBY2Nlc3NU
eXBlIHR5cGUpCiB7CiAgICAgLy8gVGhpcyBpcyBhIGhhY2t5IGZpeCBmb3Igd2hlbiB0aGUgcmVn
aXN0ZXIgYWxsb2NhdG9yIGRlY2lkZXMgdG8gYWxpYXMgdGhlIGJhc2UgcGF5bG9hZCB3aXRoIHRo
ZSByZXN1bHQgdGFnLiBUaGlzIG9ubHkgaGFwcGVucwogICAgIC8vIGluIHRoZSBjYXNlIG9mIEdl
dEJ5SWRGbHVzaCwgd2hpY2ggaGFzIGEgcmVsYXRpdmVseSBleHBlbnNpdmUgcmVnaXN0ZXIgYWxs
b2NhdGlvbiBzdG9yeSBhbHJlYWR5IHNvIHdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8KQEAgLTE5
NCw3ICsxOTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VU
YWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0
VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgQWNjZXNzVHlwZTo6R2V0KTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgdHlwZSk7CiAgICAgCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogICAgIApAQCAtMjAzLDE2ICsyMDgsMjIg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChnZW4uc2xvd1Bh
dGhKdW1wKCkpOwogCisgICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGdldEJ5SWRGdW5jdGlvbjsK
KyAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCisgICAgICAgIGdldEJ5SWRGdW5jdGlv
biA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlCisgICAgICAgIGdldEJ5SWRG
dW5jdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKGJhc2VUYWdHUFJPck5v
bmUgPT0gSW52YWxpZEdQUlJlZykgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLAor
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZXRCeUlkRnVuY3Rpb24sCiAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBnZW4uc3R1Yklu
Zm8oKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KEpTVmFsdWU6OkNlbGxUYWcp
LCBiYXNlUGF5bG9hZEdQUiwKICAgICAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51
bWJlcikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAot
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdldEJ5SWRGdW5jdGlvbiwKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIGdlbi5zdHViSW5m
bygpLCBiYXNlVGFnR1BST3JOb25lLAogICAgICAgICAgICAgYmFzZVBheWxvYWRHUFIsIGlkZW50
aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgIH0KQEAgLTM5NjEsNyArMzk3MiwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG5vUmVz
dWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAgY2FzZSBU
cnlHZXRCeUlkOiB7CisgICAgICAgIGNvbXBpbGVUcnlHZXRCeUlkKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgQVNTRVJUKG5vZGUt
PnByZWRpY3Rpb24oKSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMGRmNGEzMDNiYTYwNjNmYTQ3ZDk3NjI1
MzhhMWVlMzkyZjIwMWViZC4uN2ViNmIxMDgzOWM5YjNhYzdhZGVkY2RkNWE4OTNkMDYxNDQyODJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC0xNTMsNyArMTUzLDEyIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpT
VmFsdWUoRWRnZSBlZGdlKQogICAgIH0KIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVk
R2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVz
dWx0R1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aFRhcmdldCwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSkKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU9yaWdpbiBvcmlnaW4sIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHJlc3VsdCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgLCBTcGlsbFJlZ2lzdGVyc01vZGUgbW9kZSwgQWNjZXNz
VHlwZSB0eXBlKQoreworICAgIGNhY2hlZEdldEJ5SWQob3JpZ2luLCBiYXNlLmdwcigpLCByZXN1
bHQuZ3ByKCksIGlkZW50aWZpZXJOdW1iZXIsIHNsb3dQYXRoVGFyZ2V0LCBtb2RlLCB0eXBlKTsK
K30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgcmVzdWx0R1BSLCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyLCBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aFRhcmdldCwgU3BpbGxSZWdpc3Rl
cnNNb2RlIHNwaWxsTW9kZSwgQWNjZXNzVHlwZSB0eXBlKQogewogICAgIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUgPSBtX2ppdC5yZWNvcmRDYWxsU2l0ZUFuZEdlbmVyYXRlRXhjZXB0aW9uSGFuZGxp
bmdPU1JFeGl0SWZOZWVkZWQoY29kZU9yaWdpbiwgbV9zdHJlYW0tPnNpemUoKSk7CiAgICAgUmVn
aXN0ZXJTZXQgdXNlZFJlZ2lzdGVycyA9IHRoaXMtPnVzZWRSZWdpc3RlcnMoKTsKQEAgLTE2NCw3
ICsxNjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgIH0KICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNh
bGxTaXRlLCB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwKLSAgICAgICAgSlNW
YWx1ZVJlZ3MocmVzdWx0R1BSKSwgQWNjZXNzVHlwZTo6R2V0KTsKKyAgICAgICAgSlNWYWx1ZVJl
Z3MocmVzdWx0R1BSKSwgdHlwZSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwog
ICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CkBAIC0xNzMsNyArMTc4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5z
bG93UGF0aEp1bXAoKSk7CiAgICAgCiAgICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3Vs
dEdQUiwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgPyBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUgOiBvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUsIHJlc3VsdEdQUiwgZ2VuLnN0dWJJbmZvKCksIGJhc2VH
UFIsCiAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlciksIHNwaWxsTW9kZSk7
CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTQw
MTksNiArNDAyNCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBj
YXNlIFRyeUdldEJ5SWQ6IHsKKyAgICAgICAgY29tcGlsZVRyeUdldEJ5SWQobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZDogewogICAgICAgICBBU1NFUlQo
bm9kZS0+cHJlZGljdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IDMxZWRmYjZkZWNjNzA1ZGY4MGE0YTYwYmIyNWQxYjUwNDkz
OWRiNjIuLjFjOTFjZjRjNWM5N2FiMjE1N2UyYTY4NDc5MzUyOTc0Y2ZhYTIxZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTE2Niw2ICsx
NjYsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNh
c2UgTmV3QXJyYXlXaXRoU2l6ZToKKyAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRC
eUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgVG9UaGlzOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDYwZGFhN2I2MDM2
MTNiOTI0MjkxZDZjMGNlNGVjMzIzMGJkNzE4NGQuLjRiZTI2ZWQxMWMzOWJiZjYzNDg3MGY1NmVm
YTYzNDgwODEyNjgzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTU5Myw5ICs1OTMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQ
dXRTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjb21waWxlUHV0U3RydWN0dXJlKCk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgorICAgICAgICAgICAgY29tcGls
ZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKLSAgICAgICAgICAg
IGNvbXBpbGVHZXRCeUlkKCk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBl
OjpHZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW46CiAgICAgICAgICAg
ICBjb21waWxlSW4oKTsKQEAgLTIzMDIsMTEgKzIzMDUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBjb21waWxlR2V0QnlJZCgpCisgICAgdm9pZCBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBl
IHR5cGUpCiAgICAgeworICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIENlbGxVc2U6IHsKLSAgICAgICAgICAg
IHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAg
ICAgICBzZXRKU1ZhbHVlKGdldEJ5SWQobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgdHlwZSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTIzMjQs
MTIgKzIzMjgsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpc0NlbGwodmFsdWUsIHBy
b3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1bnN1cmUoY2VsbENhc2UpLCB1bnN1cmUobm90
Q2VsbENhc2UpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyhjZWxsQ2FzZSwgbm90Q2VsbENhc2UpOwotICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgY2VsbFJlc3VsdCA9IG1fb3V0LmFuY2hvcihnZXRCeUlkKHZhbHVlKSk7
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGdl
dEJ5SWQodmFsdWUsIHR5cGUpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSkkgZ2V0QnlJ
ZEZ1bmN0aW9uOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQorICAg
ICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJh
dGlvblRyeUdldEJ5SWRHZW5lcmljOworCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RD
ZWxsQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENl
bGxSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAgIG1fb3V0Lmlu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZEdlbmVyaWMpLAorICAgICAgICAg
ICAgICAgIG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24oZ2V0QnlJZEZ1bmN0aW9uKSwKICAg
ICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJl
cigpXSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTcyOTMs
NyArNzMwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuaW50
UHRyLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVyZmx5KTsKICAgICB9CiAgICAgCi0gICAgTFZh
bHVlIGdldEJ5SWQoTFZhbHVlIGJhc2UpCisgICAgTFZhbHVlIGdldEJ5SWQoTFZhbHVlIGJhc2Us
IEFjY2Vzc1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAg
ICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXTsKQEAgLTczMzEsNyArNzM0MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUR2V0QnlJZEdlbmVyYXRvcj46
OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLCBBY2Nlc3NUeXBl
OjpHZXQpOworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkp
LCB0eXBlKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChq
aXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJl
bCgpOwpAQCAtNzM0MCwxMSArNzM1MCwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICBbPV0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcHRpbWl6YXRpb25GdW5jdGlv
bjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvblRy
eUdldEJ5SWRPcHRpbWl6ZTsKKwogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5z
bG93UGF0aEp1bXAoKS5saW5rKCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBzbG93UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlv
bigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgpLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IHBhcmFtc1swXS5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25z
LmdldCgpLCBvcHRpbWl6YXRpb25GdW5jdGlvbiwgcGFyYW1zWzBdLmdwcigpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3It
PnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0uZ3ByKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVpZCkpLmNhbGwoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZWM3M2MxYzM2YTgxMjg3YTYx
OGRkZGI0ZmNiZjcyYzA0YjZlYmNiYS4uNjYxZjk1MWZhMzhkZjM2Zjk2MTI3NDk1YjdkMjcxNTI1
Zjg2YmY1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CkBAIC0xNzAsNiArMTcwLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7CiB9CiAKKworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7Cisg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHVpZCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNl
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgaWRlbnQsIHNsb3QpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Lmdl
dFB1cmVSZXN1bHQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHJ5R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCA4ZTgyYjNiOTA3NWQwYWYzNzBlN2VlNTY5ZGRmM2M5NTdjMTQx
ZTkzLi5jNjNiMTlkNTBhOGJlNjIwOTdlZWQ1Y2UxYTIwYzBiZjZhYTkwNDVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjg4LDYgKzI4OCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd091dE9mQm91bmRzQWNjZXNzRXJyb3IoRXhl
Y1N0YXRlKikgV1RGX0lOVEVSTkFMCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2Fs
bEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogaW50MzJfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlHZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEdl
bmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy90cnktZ2V0LWJ5LWlkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90
cnktZ2V0LWJ5LWlkLmpzCmluZGV4IDBkOWI2N2MzZmNhYmY1ZDEwYmZkZTIyYzNiODY0OTMzMTUw
NzNjNDEuLjZiMGI1MzgzYjNkZDAwNjhkYTk5ZmI2YzgxMjBlYjEwZDFhYjllOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHJ5LWdldC1ieS1pZC5qcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RyeS1nZXQtYnktaWQuanMK
QEAgLTEsMjYgKzEsMzcgQEAKIGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5TmFtZSkg
eyByZXR1cm4gYChmdW5jdGlvbiAoYmFzZSkgeyByZXR1cm4gQHRyeUdldEJ5SWQoYmFzZSwgJyR7
cHJvcGVydHlOYW1lfScpOyB9KWA7IH0KIAorZnVuY3Rpb24gdHJ5R2V0QnlJZFRleHRTdHJpY3Qo
cHJvcGVydHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0aW9uIChiYXNlKSB7ICJ1c2Ugc3RyaWN0Ijsg
cmV0dXJuIEB0cnlHZXRCeUlkKGJhc2UsICcke3Byb3BlcnR5TmFtZX0nKTsgfSlgOyB9CiAKIC8v
IFRlc3QgZ2V0IHZhbHVlIG9mZiBvYmplY3QuCiB7Ci0gICAgbGV0IGdldENhbGxlciA9IGNyZWF0
ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHQoImNhbGxlciIpKTsKLSAgICBub0lubGluZShnZXRDYWxs
ZXIpOworICAgIGxldCBnZXQgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0KCJjYWxsZXIi
KSk7CisgICAgbm9JbmxpbmUoZ2V0KTsKKyAgICBsZXQgZ2V0U3RyaWN0ID0gY3JlYXRlQnVpbHRp
bih0cnlHZXRCeUlkVGV4dFN0cmljdCgiY2FsbGVyIikpOworICAgIG5vSW5saW5lKGdldFN0cmlj
dCk7CisKICAgICBsZXQgb2JqID0ge2NhbGxlcjogMX07CiAKICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwMDsgaSsrKSB7Ci0gICAgICAgIGlmIChnZXRDYWxsZXIob2JqKSAhPT0gMSkKKyAg
ICAgICAgaWYgKGdldChvYmopICE9PSAxKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3
cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKKyAgICAgICAgaWYgKGdldFN0cmljdChvYmopICE9
PSAxKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIg
KyBpKTsKICAgICB9CiB9CiAKIC8vIFRlc3Qgc2xvdCBpcyBjdXN0b20gZnVuY3Rpb24gdHJhcCBm
b3IgYSB2YWx1ZS4KIHsKLSAgICBsZXQgZ2V0Q2FsbGVyID0gY3JlYXRlQnVpbHRpbih0cnlHZXRC
eUlkVGV4dCgiY2FsbGVyIikpOwotICAgIG5vSW5saW5lKGdldENhbGxlcik7CisgICAgbGV0IGdl
dCA9IGNyZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHQoImNhbGxlciIpKTsKKyAgICBub0lubGlu
ZShnZXQpOworICAgIGxldCBnZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0
U3RyaWN0KCJjYWxsZXIiKSk7CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0KTsKKwogICAgIGxldCBm
dW5jID0gZnVuY3Rpb24gKCkge307CiAKICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsg
aSsrKSB7Ci0gICAgICAgIGlmIChnZXRDYWxsZXIoZnVuYykgIT09IG51bGwpCisgICAgICAgIGlm
IChnZXQoZnVuYykgIT09IG51bGwpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25n
IG9uIGl0ZXJhdGlvbjogIiArIGkpOworICAgICAgICBpZiAoZ2V0U3RyaWN0KGZ1bmMpICE9PSBu
dWxsKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIg
KyBpKTsKICAgICB9CiB9CkBAIC0yOSwxMiArNDAsMTcgQEAgZnVuY3Rpb24gdHJ5R2V0QnlJZFRl
eHQocHJvcGVydHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0aW9uIChiYXNlKSB7IHJldHVybiBAdHJ5
R2UKIHsKICAgICBsZXQgZ2V0ID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4dCgiZ2V0dGVy
U2V0dGVyIikpOwogICAgIG5vSW5saW5lKGdldCk7CisgICAgbGV0IGdldFN0cmljdCA9IGNyZWF0
ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHRTdHJpY3QoImdldHRlclNldHRlciIpKTsKKyAgICBub0lu
bGluZShnZXRTdHJpY3QpOworCiAgICAgbGV0IG9iaiA9IHt9OwogICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShvYmosICJnZXR0ZXJTZXR0ZXIiLCB7IGdldDogZnVuY3Rpb24gKCkgeyB0aHJvdyBu
ZXcgRXJyb3IoInNob3VsZCBub3QgYmUgY2FsbGVkIik7IH0gfSk7CiAKICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CiAgICAgICAgIGlmIChnZXQob2JqKSAhPT0gZ2V0R2V0
dGVyU2V0dGVyKG9iaiwgImdldHRlclNldHRlciIpKQogICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKKyAgICAgICAgaWYgKGdldFN0cmljdChv
YmopICE9PSBnZXRHZXR0ZXJTZXR0ZXIob2JqLCAiZ2V0dGVyU2V0dGVyIikpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOwogICAgIH0KIH0K
IApAQCAtNDIsMTEgKzU4LDE2IEBAIGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5TmFt
ZSkgeyByZXR1cm4gYChmdW5jdGlvbiAoYmFzZSkgeyByZXR1cm4gQHRyeUdlCiB7CiAgICAgbGV0
IGdldCA9IGNyZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHQoImdldHRlclNldHRlciIpKTsKICAg
ICBub0lubGluZShnZXQpOworICAgIGxldCBnZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGluKHRyeUdl
dEJ5SWRUZXh0U3RyaWN0KCJnZXR0ZXJTZXR0ZXIiKSk7CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0
KTsKKwogICAgIGxldCBvYmogPSB7fTsKIAogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAw
OyBpKyspIHsKICAgICAgICAgaWYgKGdldChvYmopICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOworICAgICAgICBp
ZiAoZ2V0U3RyaWN0KG9iaikgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CiAgICAgfQogfQogCkBAIC01NCw2ICs3
NSw4IEBAIGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5TmFtZSkgeyByZXR1cm4gYChm
dW5jdGlvbiAoYmFzZSkgeyByZXR1cm4gQHRyeUdlCiB7CiAgICAgbGV0IGdldCA9IGNyZWF0ZUJ1
aWx0aW4odHJ5R2V0QnlJZFRleHQoInZhbHVlIikpOwogICAgIG5vSW5saW5lKGdldCk7CisgICAg
bGV0IGdldFN0cmljdCA9IGNyZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHRTdHJpY3QoInZhbHVl
IikpOworICAgIG5vSW5saW5lKGdldFN0cmljdCk7CiAKICAgICBsZXQgb2JqID0ge3ZhbHVlOiAx
fTsKICAgICBsZXQgcCA9IG5ldyBQcm94eShvYmosIHsgZ2V0OiBmdW5jdGlvbigpIHsgdGhyb3cg
bmV3IEVycm9yKCJzaG91bGQgbm90IGJlIGNhbGxlZCIpOyB9IH0pOwpAQCAtNjEsNiArODQsOCBA
QCBmdW5jdGlvbiB0cnlHZXRCeUlkVGV4dChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rp
b24gKGJhc2UpIHsgcmV0dXJuIEB0cnlHZQogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAw
OyBpKyspIHsKICAgICAgICAgaWYgKGdldChwKSAhPT0gbnVsbCkKICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CisgICAgICAgIGlmIChnZXRT
dHJpY3QocCkgIT09IG51bGwpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9u
IGl0ZXJhdGlvbjogIiArIGkpOwogICAgIH0KIH0KIApAQCAtNjgsNiArOTMsOCBAQCBmdW5jdGlv
biB0cnlHZXRCeUlkVGV4dChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rpb24gKGJhc2Up
IHsgcmV0dXJuIEB0cnlHZQogewogICAgIGxldCBnZXQgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5
SWRUZXh0KCJjYWxsZXIiKSk7CiAgICAgbm9JbmxpbmUoZ2V0KTsKKyAgICBsZXQgZ2V0U3RyaWN0
ID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4dFN0cmljdCgiY2FsbGVyIikpOworICAgIG5v
SW5saW5lKGdldFN0cmljdCk7CiAKICAgICBsZXQgb2JqID0ge2NhbGxlciA6IDF9OwogICAgIGxl
dCBmdW5jID0gZnVuY3Rpb24oKSB7fTsKQEAgLTc2LDkgKzEwMywxMyBAQCBmdW5jdGlvbiB0cnlH
ZXRCeUlkVGV4dChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rpb24gKGJhc2UpIHsgcmV0
dXJuIEB0cnlHZQogICAgICAgICBpZiAoaSAlIDEwMCA9PT0gMCkgewogICAgICAgICAgICAgaWYg
KGdldChmdW5jKSAhPT0gbnVsbCkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndy
b25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOworICAgICAgICAgICAgaWYgKGdldFN0cmljdChmdW5j
KSAhPT0gbnVsbCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0
aW9uOiAiICsgaSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoZ2V0KG9iaikg
IT09IDEpCiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRp
b246ICIgKyBpKTsKKyAgICAgICAgICAgIGlmIChnZXRTdHJpY3Qob2JqKSAhPT0gMSkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC04Nyw2ICsxMTgsOCBAQCBmdW5jdGlvbiB0cnlHZXRCeUlkVGV4
dChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rpb24gKGJhc2UpIHsgcmV0dXJuIEB0cnlH
ZQogewogICAgIGxldCBnZXQgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0KCJjYWxsZXIi
KSk7CiAgICAgbm9JbmxpbmUoZ2V0KTsKKyAgICBsZXQgZ2V0U3RyaWN0ID0gY3JlYXRlQnVpbHRp
bih0cnlHZXRCeUlkVGV4dFN0cmljdCgiY2FsbGVyIikpOworICAgIG5vSW5saW5lKGdldFN0cmlj
dCk7CiAKICAgICBsZXQgZnVuYyA9IGZ1bmN0aW9uKCkge307CiAKQEAgLTk0LDEwICsxMjcsMTQg
QEAgZnVuY3Rpb24gdHJ5R2V0QnlJZFRleHQocHJvcGVydHlOYW1lKSB7IHJldHVybiBgKGZ1bmN0
aW9uIChiYXNlKSB7IHJldHVybiBAdHJ5R2UKICAgICAgICAgaWYgKGkgJSAxMDAgPT09IDApIHsK
ICAgICAgICAgICAgIGlmIChnZXQoZnVuYykgIT09IG51bGwpCiAgICAgICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKKyAgICAgICAgICAgIGlm
IChnZXRTdHJpY3QoZnVuYykgIT09IG51bGwpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Indyb25nIG9uIGl0ZXJhdGlvbjogIiArIGkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbGV0IG9iaiA9IHtjYWxsZXIgOiAxfTsKICAgICAgICAgICAgIGlmIChnZXQob2JqKSAhPT0g
MSkKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIndyb25nIG9uIGl0ZXJhdGlvbjog
IiArIGkpOworICAgICAgICAgICAgaWYgKGdldFN0cmljdChvYmopICE9PSAxKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTEwNiwxMiArMTQzLDMwIEBAIGZ1bmN0aW9uIHRyeUdldEJ5SWRUZXh0
KHByb3BlcnR5TmFtZSkgeyByZXR1cm4gYChmdW5jdGlvbiAoYmFzZSkgeyByZXR1cm4gQHRyeUdl
CiB7CiAgICAgbGV0IGdldCA9IGNyZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHQoImxlbmd0aCIp
KTsKICAgICBub0lubGluZShnZXQpOworICAgIGxldCBnZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGlu
KHRyeUdldEJ5SWRUZXh0U3RyaWN0KCJsZW5ndGgiKSk7CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0
KTsKIAogICAgIGxldCBhcnIgPSBbXTsKIAogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAw
OyBpKyspIHsKICAgICAgICAgaWYgKGdldChhcnIpICE9PSBudWxsKQogICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJ3cm9uZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKKyAgICAgICAgaWYgKGdl
dFN0cmljdChhcnIpICE9PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ3cm9u
ZyBvbiBpdGVyYXRpb246ICIgKyBpKTsKKyAgICB9Cit9CiAKKy8vIFRlc3Qgd2l0aCBub24tb2Jq
ZWN0LgoreworICAgIGxldCBnZXQgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0KCJsZW5n
dGgiKSk7CisgICAgbm9JbmxpbmUoZ2V0KTsKKyAgICBsZXQgZ2V0U3RyaWN0ID0gY3JlYXRlQnVp
bHRpbih0cnlHZXRCeUlkVGV4dFN0cmljdCgibGVuZ3RoIikpOworICAgIG5vSW5saW5lKGdldFN0
cmljdCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAg
IGlmIChnZXQoMSkgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
d3Jvbmcgb24gaXRlcmF0aW9uOiAiICsgaSk7CisgICAgICAgIGlmIChnZXRTdHJpY3QoMSkgIT09
IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigid3Jvbmcgb24gaXRlcmF0
aW9uOiAiICsgaSk7CiAgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>